Add hasDelegate(), hasDelegateExpression() and hasInitializer() to PsiJetPropertyStub
This commit is contained in:
@@ -21,4 +21,7 @@ import org.jetbrains.jet.lang.psi.JetProperty;
|
|||||||
public interface PsiJetPropertyStub extends PsiJetStubWithFqName<JetProperty> {
|
public interface PsiJetPropertyStub extends PsiJetStubWithFqName<JetProperty> {
|
||||||
boolean isVar();
|
boolean isVar();
|
||||||
boolean isTopLevel();
|
boolean isTopLevel();
|
||||||
|
boolean hasDelegate();
|
||||||
|
boolean hasDelegateExpression();
|
||||||
|
boolean hasInitializer();
|
||||||
}
|
}
|
||||||
|
|||||||
+13
-3
@@ -54,8 +54,12 @@ public class JetPropertyElementType extends JetStubElementType<PsiJetPropertyStu
|
|||||||
String.format("Should not store local property: %s, parent %s",
|
String.format("Should not store local property: %s, parent %s",
|
||||||
psi.getText(), psi.getParent() != null ? psi.getParent().getText() : "<no parent>");
|
psi.getText(), psi.getParent() != null ? psi.getParent().getText() : "<no parent>");
|
||||||
|
|
||||||
return new PsiJetPropertyStubImpl(parentStub, StringRef.fromString(psi.getName()),
|
return new PsiJetPropertyStubImpl(
|
||||||
psi.isVar(), psi.isTopLevel(), ResolveSessionUtils.safeFqNameForLazyResolve(psi));
|
parentStub, StringRef.fromString(psi.getName()),
|
||||||
|
psi.isVar(), psi.isTopLevel(), psi.hasDelegate(),
|
||||||
|
psi.hasDelegateExpression(), psi.hasInitializer(),
|
||||||
|
ResolveSessionUtils.safeFqNameForLazyResolve(psi)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -63,6 +67,9 @@ public class JetPropertyElementType extends JetStubElementType<PsiJetPropertyStu
|
|||||||
dataStream.writeName(stub.getName());
|
dataStream.writeName(stub.getName());
|
||||||
dataStream.writeBoolean(stub.isVar());
|
dataStream.writeBoolean(stub.isVar());
|
||||||
dataStream.writeBoolean(stub.isTopLevel());
|
dataStream.writeBoolean(stub.isTopLevel());
|
||||||
|
dataStream.writeBoolean(stub.hasDelegate());
|
||||||
|
dataStream.writeBoolean(stub.hasDelegateExpression());
|
||||||
|
dataStream.writeBoolean(stub.hasInitializer());
|
||||||
|
|
||||||
FqName fqName = stub.getFqName();
|
FqName fqName = stub.getFqName();
|
||||||
dataStream.writeName(fqName != null ? fqName.asString() : null);
|
dataStream.writeName(fqName != null ? fqName.asString() : null);
|
||||||
@@ -74,11 +81,14 @@ public class JetPropertyElementType extends JetStubElementType<PsiJetPropertyStu
|
|||||||
StringRef name = dataStream.readName();
|
StringRef name = dataStream.readName();
|
||||||
boolean isVar = dataStream.readBoolean();
|
boolean isVar = dataStream.readBoolean();
|
||||||
boolean isTopLevel = dataStream.readBoolean();
|
boolean isTopLevel = dataStream.readBoolean();
|
||||||
|
boolean hasDelegate = dataStream.readBoolean();
|
||||||
|
boolean hasDelegateExpression = dataStream.readBoolean();
|
||||||
|
boolean hasInitializer = dataStream.readBoolean();
|
||||||
|
|
||||||
StringRef fqNameAsString = dataStream.readName();
|
StringRef fqNameAsString = dataStream.readName();
|
||||||
FqName fqName = fqNameAsString != null ? new FqName(fqNameAsString.toString()) : null;
|
FqName fqName = fqNameAsString != null ? new FqName(fqNameAsString.toString()) : null;
|
||||||
|
|
||||||
return new PsiJetPropertyStubImpl(parentStub, name, isVar, isTopLevel, fqName);
|
return new PsiJetPropertyStubImpl(parentStub, name, isVar, isTopLevel, hasDelegate, hasDelegateExpression, hasInitializer, fqName);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+34
-1
@@ -29,18 +29,36 @@ public class PsiJetPropertyStubImpl extends StubBase<JetProperty> implements Psi
|
|||||||
private final StringRef name;
|
private final StringRef name;
|
||||||
private final boolean isVar;
|
private final boolean isVar;
|
||||||
private final boolean isTopLevel;
|
private final boolean isTopLevel;
|
||||||
|
private final boolean hasDelegate;
|
||||||
|
private final boolean hasDelegateExpression;
|
||||||
|
private final boolean hasInitializer;
|
||||||
private final FqName fqName;
|
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);
|
super(parent, JetStubElementTypes.PROPERTY);
|
||||||
|
|
||||||
if (isTopLevel && fqName == null) {
|
if (isTopLevel && fqName == null) {
|
||||||
throw new IllegalArgumentException("fqName shouldn't be null for top level properties");
|
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.name = name;
|
||||||
this.isVar = isVar;
|
this.isVar = isVar;
|
||||||
this.isTopLevel = isTopLevel;
|
this.isTopLevel = isTopLevel;
|
||||||
|
this.hasDelegate = hasDelegate;
|
||||||
|
this.hasDelegateExpression = hasDelegateExpression;
|
||||||
|
this.hasInitializer = hasInitializer;
|
||||||
this.fqName = fqName;
|
this.fqName = fqName;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -54,6 +72,21 @@ public class PsiJetPropertyStubImpl extends StubBase<JetProperty> implements Psi
|
|||||||
return isTopLevel;
|
return isTopLevel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasDelegate() {
|
||||||
|
return hasDelegate;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasDelegateExpression() {
|
||||||
|
return hasDelegateExpression;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasInitializer() {
|
||||||
|
return hasInitializer;
|
||||||
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
public FqName getFqName() {
|
public FqName getFqName() {
|
||||||
|
|||||||
Reference in New Issue
Block a user