diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/PsiJetPropertyStub.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/PsiJetPropertyStub.java index be438fa3044..bc8b50d00bc 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/PsiJetPropertyStub.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/PsiJetPropertyStub.java @@ -21,4 +21,7 @@ import org.jetbrains.jet.lang.psi.JetProperty; public interface PsiJetPropertyStub extends PsiJetStubWithFqName { boolean isVar(); boolean isTopLevel(); + boolean hasDelegate(); + boolean hasDelegateExpression(); + boolean hasInitializer(); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/elements/JetPropertyElementType.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/elements/JetPropertyElementType.java index 76cd4894af0..1ad628ebb11 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/elements/JetPropertyElementType.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/elements/JetPropertyElementType.java @@ -54,8 +54,12 @@ public class JetPropertyElementType extends JetStubElementType"); - return new PsiJetPropertyStubImpl(parentStub, StringRef.fromString(psi.getName()), - psi.isVar(), psi.isTopLevel(), ResolveSessionUtils.safeFqNameForLazyResolve(psi)); + return new PsiJetPropertyStubImpl( + parentStub, StringRef.fromString(psi.getName()), + psi.isVar(), psi.isTopLevel(), psi.hasDelegate(), + psi.hasDelegateExpression(), psi.hasInitializer(), + ResolveSessionUtils.safeFqNameForLazyResolve(psi) + ); } @Override @@ -63,6 +67,9 @@ public class JetPropertyElementType extends JetStubElementType implements Psi private final StringRef name; private final boolean isVar; private final boolean isTopLevel; + private final boolean hasDelegate; + private final boolean hasDelegateExpression; + private final boolean hasInitializer; private final FqName fqName; - public PsiJetPropertyStubImpl( StubElement parent, StringRef name, boolean isVar, boolean isTopLevel, @Nullable FqName fqName) { + public PsiJetPropertyStubImpl( + StubElement parent, + StringRef name, + boolean isVar, + boolean isTopLevel, + boolean hasDelegate, + boolean hasDelegateExpression, + boolean hasInitializer, + @Nullable FqName fqName + ) { super(parent, JetStubElementTypes.PROPERTY); if (isTopLevel && fqName == null) { throw new IllegalArgumentException("fqName shouldn't be null for top level properties"); } + if (hasDelegateExpression && !hasDelegate) { + throw new IllegalArgumentException("Can't have delegate expression without delegate"); + } this.name = name; this.isVar = isVar; this.isTopLevel = isTopLevel; + this.hasDelegate = hasDelegate; + this.hasDelegateExpression = hasDelegateExpression; + this.hasInitializer = hasInitializer; this.fqName = fqName; } @@ -54,6 +72,21 @@ public class PsiJetPropertyStubImpl extends StubBase implements Psi return isTopLevel; } + @Override + public boolean hasDelegate() { + return hasDelegate; + } + + @Override + public boolean hasDelegateExpression() { + return hasDelegateExpression; + } + + @Override + public boolean hasInitializer() { + return hasInitializer; + } + @Nullable @Override public FqName getFqName() {