From 0aa527347d04e50aea91eec7d7f5224a7229b77a Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Sun, 24 Nov 2019 21:32:27 +0300 Subject: [PATCH] Stubs don't break KtTypeAlias::isTopLevel `foo ?: bar is baz` is parsed as `(foo ?: bar) is baz`. So, if stub is non-null, this always returns `False`, because `Boolean` is definitely not a `KtFile`. See https://pl.kotl.in/6DtggcImf This Kotlin's "most vexing parse" badly needs a diagnostics. --- compiler/psi/src/org/jetbrains/kotlin/psi/KtTypeAlias.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler/psi/src/org/jetbrains/kotlin/psi/KtTypeAlias.kt b/compiler/psi/src/org/jetbrains/kotlin/psi/KtTypeAlias.kt index 4e521502ea6..e9471848e0c 100644 --- a/compiler/psi/src/org/jetbrains/kotlin/psi/KtTypeAlias.kt +++ b/compiler/psi/src/org/jetbrains/kotlin/psi/KtTypeAlias.kt @@ -33,7 +33,7 @@ class KtTypeAlias : KtTypeParameterListOwnerStub, KtNamedDe visitor.visitTypeAlias(this, data) fun isTopLevel(): Boolean = - stub?.isTopLevel() ?: parent is KtFile + stub?.isTopLevel() ?: (parent is KtFile) @IfNotParsed fun getTypeAliasKeyword(): PsiElement? =