Define toString() for stub impl classes via reflection

Update outdated test data for stub builder test
This commit is contained in:
Pavel V. Talanov
2014-05-20 16:45:44 +04:00
parent ab4d4a309a
commit e33144f89a
41 changed files with 287 additions and 265 deletions
@@ -27,7 +27,7 @@ import org.jetbrains.jet.lang.psi.stubs.impl.PsiJetPlaceHolderStubImpl;
import java.io.IOException;
public class JetPlaceHolderStubElementType<T extends JetElementImplStub<?>> extends JetStubElementType<PsiJetPlaceHolderStub<T>, T> {
public class JetPlaceHolderStubElementType<T extends JetElementImplStub<? extends StubElement<?>>> extends JetStubElementType<PsiJetPlaceHolderStub<T>, T> {
public JetPlaceHolderStubElementType(@NotNull @NonNls String debugName, @NotNull Class<T> psiClass) {
super(debugName, psiClass, PsiJetPlaceHolderStub.class);
@@ -0,0 +1,81 @@
/*
* Copyright 2010-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.jet.lang.psi.stubs.impl
import com.intellij.openapi.diagnostic.Logger
import com.intellij.psi.stubs.IStubElementType
import com.intellij.psi.stubs.NamedStub
import com.intellij.psi.stubs.StubBase
import com.intellij.psi.stubs.StubElement
import org.jetbrains.jet.lang.psi.JetElementImplStub
import org.jetbrains.jet.lang.psi.stubs.PsiJetClassOrObjectStub
import org.jetbrains.jet.lang.psi.stubs.PsiJetStubWithFqName
import java.lang.reflect.Method
import java.util.ArrayList
public open class JetStubBaseImpl<T : JetElementImplStub<*>>(parent: StubElement<*>?, elementType: IStubElementType<*, *>) : StubBase<T>(parent, elementType) {
override fun toString(): String {
val stubInterface = this.getClass().getInterfaces().first()
val propertiesValues = renderPropertyValues(stubInterface)
if (propertiesValues.isEmpty()) {
return ""
}
return propertiesValues.makeString(separator = ", ", prefix = "[", postfix = "]")
}
private fun renderPropertyValues(stubInterface: Class<out Any?>): List<String> {
return collectProperties(stubInterface).map { property -> renderProperty(property) }.filterNotNull().sort()
}
private fun collectProperties(stubInterface: Class<*>): Collection<Method> {
val result = ArrayList<Method>()
result.addAll(stubInterface.getDeclaredMethods().filter { it.getParameterTypes()!!.isEmpty() })
for (baseInterface in stubInterface.getInterfaces()) {
if (baseInterface in BASE_STUB_INTERFACES) {
result.addAll(collectProperties(baseInterface))
}
}
return result
}
private fun renderProperty(property: Method): String? {
return try {
val value = property.invoke(this)
val name = getPropertyName(property)
"$name=$value"
}
catch (e: Exception) {
LOGGER.error(e)
null
}
}
private fun getPropertyName(method: Method): String {
val methodName = method.getName()!!
if (methodName.startsWith("get")) {
return methodName.substring(3).decapitalize()
}
return methodName
}
class object {
private val LOGGER: Logger = Logger.getInstance(javaClass<JetStubBaseImpl<JetElementImplStub<*>>>())
private val BASE_STUB_INTERFACES = listOf(javaClass<PsiJetStubWithFqName<*>>(), javaClass<PsiJetClassOrObjectStub<*>>(), javaClass<NamedStub<*>>())
}
}
@@ -16,7 +16,6 @@
package org.jetbrains.jet.lang.psi.stubs.impl;
import com.intellij.psi.stubs.StubBase;
import com.intellij.psi.stubs.StubElement;
import com.intellij.util.io.StringRef;
import org.jetbrains.annotations.NotNull;
@@ -24,7 +23,7 @@ import org.jetbrains.jet.lang.psi.JetAnnotationEntry;
import org.jetbrains.jet.lang.psi.stubs.PsiJetAnnotationEntryStub;
import org.jetbrains.jet.lang.psi.stubs.elements.JetStubElementTypes;
public class PsiJetAnnotationEntryStubImpl extends StubBase<JetAnnotationEntry> implements PsiJetAnnotationEntryStub {
public class PsiJetAnnotationEntryStubImpl extends JetStubBaseImpl<JetAnnotationEntry> implements PsiJetAnnotationEntryStub {
private final StringRef shortName;
private final boolean hasValueArguments;
@@ -44,13 +43,4 @@ public class PsiJetAnnotationEntryStubImpl extends StubBase<JetAnnotationEntry>
public boolean hasValueArguments() {
return hasValueArguments;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("PsiJetAnnotationEntryStubImpl[");
builder.append("shortName=").append(getShortName());
builder.append("]");
return builder.toString();
}
}
@@ -16,10 +16,7 @@
package org.jetbrains.jet.lang.psi.stubs.impl;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.stubs.StubBase;
import com.intellij.psi.stubs.StubElement;
import com.intellij.util.ArrayUtil;
import com.intellij.util.io.StringRef;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.psi.JetClass;
@@ -30,7 +27,7 @@ import org.jetbrains.jet.lang.resolve.name.FqName;
import java.util.ArrayList;
import java.util.List;
public class PsiJetClassStubImpl extends StubBase<JetClass> implements PsiJetClassStub {
public class PsiJetClassStubImpl extends JetStubBaseImpl<JetClass> implements PsiJetClassStub {
private final StringRef qualifiedName;
private final StringRef name;
private final StringRef[] superNames;
@@ -103,30 +100,4 @@ public class PsiJetClassStubImpl extends StubBase<JetClass> implements PsiJetCla
public boolean isTopLevel() {
return isTopLevel;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("PsiJetClassStubImpl[");
if (isEnumEntry()) {
builder.append("enumEntry ");
}
if (isTrait()) {
builder.append("trait ");
}
if (isLocal()) {
builder.append("local ");
}
builder.append("name=").append(getName());
builder.append(" fqn=").append(getFqName());
builder.append(" superNames=").append("[").append(StringUtil.join(ArrayUtil.toStringArray(getSuperNames()))).append("]");
builder.append("]");
return builder.toString();
}
}
@@ -16,7 +16,6 @@
package org.jetbrains.jet.lang.psi.stubs.impl;
import com.intellij.psi.stubs.StubBase;
import com.intellij.psi.stubs.StubElement;
import com.intellij.util.io.StringRef;
import org.jetbrains.annotations.NotNull;
@@ -26,7 +25,7 @@ import org.jetbrains.jet.lang.psi.stubs.PsiJetFunctionStub;
import org.jetbrains.jet.lang.psi.stubs.elements.JetStubElementTypes;
import org.jetbrains.jet.lang.resolve.name.FqName;
public class PsiJetFunctionStubImpl extends StubBase<JetNamedFunction> implements PsiJetFunctionStub {
public class PsiJetFunctionStubImpl extends JetStubBaseImpl<JetNamedFunction> implements PsiJetFunctionStub {
private final StringRef nameRef;
private final boolean isTopLevel;
@@ -91,31 +90,6 @@ public class PsiJetFunctionStubImpl extends StubBase<JetNamedFunction> implement
return hasTypeParameterListBeforeFunctionName;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("PsiJetFunctionStubImpl[");
if (isTopLevel()) {
assert fqName != null;
builder.append("top ").append("fqName=").append(fqName.toString()).append(" ");
}
if (isExtension()) {
builder.append("ext ");
}
if (!hasBlockBody) {
builder.append("no block body ");
}
builder.append("name=").append(getName());
builder.append("]");
return builder.toString();
}
@Nullable
@Override
public FqName getFqName() {
@@ -16,7 +16,6 @@
package org.jetbrains.jet.lang.psi.stubs.impl;
import com.intellij.psi.stubs.StubBase;
import com.intellij.psi.stubs.StubElement;
import com.intellij.util.io.StringRef;
import org.jetbrains.annotations.Nullable;
@@ -24,7 +23,7 @@ import org.jetbrains.jet.lang.psi.JetImportDirective;
import org.jetbrains.jet.lang.psi.stubs.PsiJetImportDirectiveStub;
import org.jetbrains.jet.lang.psi.stubs.elements.JetStubElementTypes;
public class PsiJetImportDirectiveStubImpl extends StubBase<JetImportDirective> implements PsiJetImportDirectiveStub {
public class PsiJetImportDirectiveStubImpl extends JetStubBaseImpl<JetImportDirective> implements PsiJetImportDirectiveStub {
private final boolean isAbsoluteInRootPackage;
private final boolean isAllUnder;
@Nullable
@@ -16,7 +16,6 @@
package org.jetbrains.jet.lang.psi.stubs.impl;
import com.intellij.psi.stubs.StubBase;
import com.intellij.psi.stubs.StubElement;
import com.intellij.util.ArrayUtil;
import org.jetbrains.annotations.NotNull;
@@ -27,7 +26,7 @@ import org.jetbrains.jet.lexer.JetModifierKeywordToken;
import static org.jetbrains.jet.lexer.JetTokens.MODIFIER_KEYWORDS_ARRAY;
public class PsiJetModifierListStubImpl extends StubBase<JetModifierList> implements PsiJetModifierListStub {
public class PsiJetModifierListStubImpl extends JetStubBaseImpl<JetModifierList> implements PsiJetModifierListStub {
static {
assert MODIFIER_KEYWORDS_ARRAY.length <= 32 : "Current implementation depends on the ability to represent modifier list as bit mask";
@@ -68,9 +67,14 @@ public class PsiJetModifierListStubImpl extends StubBase<JetModifierList> implem
StringBuilder sb = new StringBuilder();
sb.append(super.toString());
sb.append("[");
boolean first = true;
for (JetModifierKeywordToken modifierKeyword : MODIFIER_KEYWORDS_ARRAY) {
if (hasModifier(modifierKeyword)) {
sb.append(modifierKeyword.getValue()).append(" ");
if (!first) {
sb.append(" ");
}
sb.append(modifierKeyword.getValue());
first = false;
}
}
sb.append("]");
@@ -16,7 +16,6 @@
package org.jetbrains.jet.lang.psi.stubs.impl;
import com.intellij.psi.stubs.StubBase;
import com.intellij.psi.stubs.StubElement;
import com.intellij.util.io.StringRef;
import org.jetbrains.annotations.NotNull;
@@ -24,7 +23,7 @@ import org.jetbrains.jet.lang.psi.JetNameReferenceExpression;
import org.jetbrains.jet.lang.psi.stubs.PsiJetNameReferenceExpressionStub;
import org.jetbrains.jet.lang.psi.stubs.elements.JetStubElementTypes;
public class PsiJetNameReferenceExpressionStubImpl extends StubBase<JetNameReferenceExpression> implements PsiJetNameReferenceExpressionStub {
public class PsiJetNameReferenceExpressionStubImpl extends JetStubBaseImpl<JetNameReferenceExpression> implements PsiJetNameReferenceExpressionStub {
@NotNull
private final StringRef referencedName;
@@ -16,10 +16,7 @@
package org.jetbrains.jet.lang.psi.stubs.impl;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.stubs.StubBase;
import com.intellij.psi.stubs.StubElement;
import com.intellij.util.ArrayUtil;
import com.intellij.util.io.StringRef;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -31,7 +28,7 @@ import org.jetbrains.jet.lang.resolve.name.FqName;
import java.util.ArrayList;
import java.util.List;
public class PsiJetObjectStubImpl extends StubBase<JetObjectDeclaration> implements PsiJetObjectStub {
public class PsiJetObjectStubImpl extends JetStubBaseImpl<JetObjectDeclaration> implements PsiJetObjectStub {
private final StringRef name;
private final FqName fqName;
private final StringRef[] superNames;
@@ -100,30 +97,4 @@ public class PsiJetObjectStubImpl extends StubBase<JetObjectDeclaration> impleme
public boolean isLocal() {
return isLocal;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("PsiJetObjectStubImpl[");
if (isClassObject) {
builder.append("class-object ");
}
if (isTopLevel) {
builder.append("top ");
}
if (isLocal()) {
builder.append("local ");
}
builder.append("name=").append(getName());
builder.append(" fqName=").append(fqName != null ? fqName.toString() : "null");
builder.append(" superNames=").append("[").append(StringUtil.join(ArrayUtil.toStringArray(getSuperNames()))).append("]");
builder.append("]");
return builder.toString();
}
}
@@ -16,7 +16,6 @@
package org.jetbrains.jet.lang.psi.stubs.impl;
import com.intellij.psi.stubs.StubBase;
import com.intellij.psi.stubs.StubElement;
import com.intellij.util.io.StringRef;
import org.jetbrains.annotations.Nullable;
@@ -25,7 +24,7 @@ import org.jetbrains.jet.lang.psi.stubs.PsiJetParameterStub;
import org.jetbrains.jet.lang.psi.stubs.elements.JetStubElementTypes;
import org.jetbrains.jet.lang.resolve.name.FqName;
public class PsiJetParameterStubImpl extends StubBase<JetParameter> implements PsiJetParameterStub {
public class PsiJetParameterStubImpl extends JetStubBaseImpl<JetParameter> implements PsiJetParameterStub {
private final StringRef name;
private final boolean isMutable;
private final StringRef fqName;
@@ -67,23 +66,6 @@ public class PsiJetParameterStubImpl extends StubBase<JetParameter> implements P
return hasDefaultValue;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("PsiJetParameterStubImpl[");
builder.append(isMutable() ? "var " : "val ");
builder.append("name=").append(getName());
if (fqName != null) {
builder.append(" fqName=").append(fqName.toString()).append(" ");
}
builder.append("]");
return builder.toString();
}
@Nullable
@Override
public FqName getFqName() {
@@ -17,13 +17,14 @@
package org.jetbrains.jet.lang.psi.stubs.impl;
import com.intellij.psi.stubs.IStubElementType;
import com.intellij.psi.stubs.StubBase;
import com.intellij.psi.stubs.StubElement;
import org.jetbrains.jet.lang.psi.JetElement;
import org.jetbrains.jet.lang.psi.JetElementImplStub;
import org.jetbrains.jet.lang.psi.stubs.PsiJetPlaceHolderStub;
public class PsiJetPlaceHolderStubImpl<T extends JetElement> extends StubBase<T> implements PsiJetPlaceHolderStub<T> {
public class PsiJetPlaceHolderStubImpl<T extends JetElementImplStub<? extends StubElement<?>>> extends JetStubBaseImpl<T>
implements PsiJetPlaceHolderStub<T> {
public PsiJetPlaceHolderStubImpl(StubElement parent, IStubElementType elementType) {
//noinspection unchecked
super(parent, elementType);
}
}
@@ -16,13 +16,12 @@
package org.jetbrains.jet.lang.psi.stubs.impl;
import com.intellij.psi.stubs.StubBase;
import com.intellij.psi.stubs.StubElement;
import org.jetbrains.jet.lang.psi.JetPropertyAccessor;
import org.jetbrains.jet.lang.psi.stubs.PsiJetPropertyAccessorStub;
import org.jetbrains.jet.lang.psi.stubs.elements.JetStubElementTypes;
public class PsiJetPropertyAccessorStubImpl extends StubBase<JetPropertyAccessor> implements PsiJetPropertyAccessorStub {
public class PsiJetPropertyAccessorStubImpl extends JetStubBaseImpl<JetPropertyAccessor> implements PsiJetPropertyAccessorStub {
private final boolean isGetter;
private final boolean hasBody;
private final boolean hasBlockBody;
@@ -16,7 +16,6 @@
package org.jetbrains.jet.lang.psi.stubs.impl;
import com.intellij.psi.stubs.StubBase;
import com.intellij.psi.stubs.StubElement;
import com.intellij.util.io.StringRef;
import org.jetbrains.annotations.Nullable;
@@ -25,7 +24,7 @@ import org.jetbrains.jet.lang.psi.stubs.PsiJetPropertyStub;
import org.jetbrains.jet.lang.psi.stubs.elements.JetStubElementTypes;
import org.jetbrains.jet.lang.resolve.name.FqName;
public class PsiJetPropertyStubImpl extends StubBase<JetProperty> implements PsiJetPropertyStub {
public class PsiJetPropertyStubImpl extends JetStubBaseImpl<JetProperty> implements PsiJetPropertyStub {
private final StringRef name;
private final boolean isVar;
private final boolean isTopLevel;
@@ -113,24 +112,4 @@ public class PsiJetPropertyStubImpl extends StubBase<JetProperty> implements Psi
public String getName() {
return StringRef.toString(name);
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("PsiJetPropertyStubImpl[");
builder.append(isVar() ? "var " : "val ");
if (isTopLevel()) {
assert fqName != null;
builder.append("top ").append("fqName=").append(fqName.toString()).append(" ");
}
builder.append("name=").append(getName());
builder.append("]");
return builder.toString();
}
}
@@ -16,13 +16,12 @@
package org.jetbrains.jet.lang.psi.stubs.impl;
import com.intellij.psi.stubs.StubBase;
import com.intellij.psi.stubs.StubElement;
import org.jetbrains.jet.lang.psi.JetTypeConstraint;
import org.jetbrains.jet.lang.psi.stubs.PsiJetTypeConstraintStub;
import org.jetbrains.jet.lang.psi.stubs.elements.JetStubElementTypes;
public class PsiJetTypeConstraintImpl extends StubBase<JetTypeConstraint> implements PsiJetTypeConstraintStub {
public class PsiJetTypeConstraintImpl extends JetStubBaseImpl<JetTypeConstraint> implements PsiJetTypeConstraintStub {
private final boolean isClassObjectConstraint;
public PsiJetTypeConstraintImpl(StubElement parent, boolean isClassObjectConstraint) {
@@ -16,7 +16,6 @@
package org.jetbrains.jet.lang.psi.stubs.impl;
import com.intellij.psi.stubs.StubBase;
import com.intellij.psi.stubs.StubElement;
import com.intellij.util.io.StringRef;
import org.jetbrains.annotations.Nullable;
@@ -25,7 +24,7 @@ import org.jetbrains.jet.lang.psi.stubs.PsiJetTypeParameterStub;
import org.jetbrains.jet.lang.psi.stubs.elements.JetStubElementTypes;
import org.jetbrains.jet.lang.resolve.name.FqName;
public class PsiJetTypeParameterStubImpl extends StubBase<JetTypeParameter> implements PsiJetTypeParameterStub {
public class PsiJetTypeParameterStubImpl extends JetStubBaseImpl<JetTypeParameter> implements PsiJetTypeParameterStub {
private final StringRef name;
private final boolean isInVariance;
private final boolean isOutVariance;
@@ -53,25 +52,6 @@ public class PsiJetTypeParameterStubImpl extends StubBase<JetTypeParameter> impl
return StringRef.toString(name);
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("PsiJetTypeParameterStubImpl[");
if (isInVariance()) {
builder.append("in ");
}
if (isOutVariance()) {
builder.append("out ");
}
builder.append("name=").append(getName());
builder.append("]");
return builder.toString();
}
@Nullable
@Override
public FqName getFqName() {
@@ -16,14 +16,13 @@
package org.jetbrains.jet.lang.psi.stubs.impl;
import com.intellij.psi.stubs.StubBase;
import com.intellij.psi.stubs.StubElement;
import org.jetbrains.jet.lang.psi.JetProjectionKind;
import org.jetbrains.jet.lang.psi.JetTypeProjection;
import org.jetbrains.jet.lang.psi.stubs.PsiJetTypeProjectionStub;
import org.jetbrains.jet.lang.psi.stubs.elements.JetStubElementTypes;
public class PsiJetTypeProjectionStubImpl extends StubBase<JetTypeProjection> implements PsiJetTypeProjectionStub {
public class PsiJetTypeProjectionStubImpl extends JetStubBaseImpl<JetTypeProjection> implements PsiJetTypeProjectionStub {
private final int projectionKindOrdinal;
@@ -16,15 +16,12 @@
package org.jetbrains.jet.lang.psi.stubs.impl;
import com.intellij.psi.stubs.StubBase;
import com.intellij.psi.stubs.StubElement;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.psi.JetUserType;
import org.jetbrains.jet.lang.psi.stubs.PsiJetUserTypeStub;
import org.jetbrains.jet.lang.psi.stubs.elements.JetStubElementTypes;
import org.jetbrains.jet.lang.resolve.name.Name;
public class PsiJetUserTypeStubImpl extends StubBase<JetUserType> implements PsiJetUserTypeStub {
public class PsiJetUserTypeStubImpl extends JetStubBaseImpl<JetUserType> implements PsiJetUserTypeStub {
private final boolean isAbsoluteInRootPackage;
public PsiJetUserTypeStubImpl(StubElement parent, boolean isAbsoluteInRootPackage) {
+3 -1
View File
@@ -1,2 +1,4 @@
PsiJetFileStubImpl[package=]
CLASS:PsiJetClassStubImpl[isAnnotation name=Test fqn=Test superNames=[]]
PACKAGE_DIRECTIVE:
CLASS:[fqName=Test, isEnumEntry=false, isLocal=false, isTopLevel=true, isTrait=false, name=Test, superNames=[]]
MODIFIER_LIST:[annotation]
@@ -1,4 +1,10 @@
PsiJetFileStubImpl[package=]
CLASS:PsiJetClassStubImpl[name=Test fqn=Test superNames=[]]
ANNOTATION_ENTRY:PsiJetAnnotationStubImpl[shortName=Deprecated]
CLASS_BODY:PsiJetClassBodyStubImpl
PACKAGE_DIRECTIVE:
CLASS:[fqName=Test, isEnumEntry=false, isLocal=false, isTopLevel=true, isTrait=false, name=Test, superNames=[]]
MODIFIER_LIST:[]
ANNOTATION_ENTRY:[hasValueArguments=false, shortName=Deprecated]
CONSTRUCTOR_CALLEE:
TYPE_REFERENCE:
USER_TYPE:[isAbsoluteInRootPackage=false]
REFERENCE_EXPRESSION:[referencedName=Deprecated]
CLASS_BODY:
@@ -1,4 +1,10 @@
PsiJetFileStubImpl[package=]
FUN:PsiJetFunctionStubImpl[top fqName=foo name=foo]
ANNOTATION_ENTRY:PsiJetAnnotationStubImpl[shortName=Deprecated]
VALUE_PARAMETER_LIST
PACKAGE_DIRECTIVE:
FUN:[fqName=foo, hasBlockBody=true, hasBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=false, isTopLevel=true, name=foo]
MODIFIER_LIST:[]
ANNOTATION_ENTRY:[hasValueArguments=false, shortName=Deprecated]
CONSTRUCTOR_CALLEE:
TYPE_REFERENCE:
USER_TYPE:[isAbsoluteInRootPackage=false]
REFERENCE_EXPRESSION:[referencedName=Deprecated]
VALUE_PARAMETER_LIST:
@@ -1,3 +1,4 @@
PsiJetFileStubImpl[package=]
FUN:PsiJetFunctionStubImpl[top fqName=foo name=foo]
VALUE_PARAMETER_LIST
PACKAGE_DIRECTIVE:
FUN:[fqName=foo, hasBlockBody=true, hasBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=false, isTopLevel=true, name=foo]
VALUE_PARAMETER_LIST:
+5 -4
View File
@@ -1,5 +1,6 @@
PsiJetFileStubImpl[package=]
CLASS:PsiJetClassStubImpl[name=A fqn=A superNames=[]]
CLASS:PsiJetClassStubImpl[trait name=T fqn=T superNames=[]]
PROPERTY:PsiJetPropertyStubImpl[val top fqName=obj name=obj typeText=null bodyText=object : A(), T]
OBJECT_DECLARATION:PsiJetObjectStubImpl[local name=null fqName=null superNames=[AT]]
PACKAGE_DIRECTIVE:
CLASS:[fqName=A, isEnumEntry=false, isLocal=false, isTopLevel=true, isTrait=false, name=A, superNames=[]]
CLASS:[fqName=T, isEnumEntry=false, isLocal=false, isTopLevel=true, isTrait=true, name=T, superNames=[]]
PROPERTY:[fqName=obj, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReceiverTypeRef=false, hasReturnTypeRef=false, isTopLevel=true, isVar=false, name=obj]
OBJECT_DECLARATION:[fqName=null, isClassObject=false, isLocal=true, isObjectLiteral=true, isTopLevel=false, name=null, superNames=[A, T]]
+8 -6
View File
@@ -1,7 +1,9 @@
PsiJetFileStubImpl[package=]
CLASS:PsiJetClassStubImpl[name=C fqn=C superNames=[]]
CLASS_BODY
OBJECT_DECLARATION:PsiJetObjectStubImpl[class-object name=null fqName=null superNames=[]]
CLASS_BODY
FUN:PsiJetFunctionStubImpl[name=foo]
VALUE_PARAMETER_LIST
PACKAGE_DIRECTIVE:
CLASS:[fqName=C, isEnumEntry=false, isLocal=false, isTopLevel=true, isTrait=false, name=C, superNames=[]]
CLASS_BODY:
CLASS_OBJECT:
OBJECT_DECLARATION:[fqName=null, isClassObject=true, isLocal=false, isObjectLiteral=false, isTopLevel=false, name=null, superNames=[]]
CLASS_BODY:
FUN:[fqName=C.foo, hasBlockBody=true, hasBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=false, isTopLevel=false, name=foo]
VALUE_PARAMETER_LIST:
+8 -3
View File
@@ -1,4 +1,9 @@
PsiJetFileStubImpl[package=]
CLASS:PsiJetClassStubImpl[name=More fqn=More superNames=[]]
CLASS_BODY
PROPERTY:PsiJetPropertyStubImpl[val name=test typeText=Int bodyText=11]
PACKAGE_DIRECTIVE:
CLASS:[fqName=More, isEnumEntry=false, isLocal=false, isTopLevel=true, isTrait=false, name=More, superNames=[]]
CLASS_BODY:
PROPERTY:[fqName=More.test, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReceiverTypeRef=false, hasReturnTypeRef=true, isTopLevel=false, isVar=false, name=test]
MODIFIER_LIST:[private]
TYPE_REFERENCE:
USER_TYPE:[isAbsoluteInRootPackage=false]
REFERENCE_EXPRESSION:[referencedName=Int]
@@ -1,5 +1,6 @@
PsiJetFileStubImpl[package=]
CLASS:PsiJetClassStubImpl[name=C fqn=C superNames=[]]
TYPE_PARAMETER_LIST
TYPE_PARAMETER:PsiJetTypeParameterStubImpl[name=T extendText=null]
CLASS_BODY
PACKAGE_DIRECTIVE:
CLASS:[fqName=C, isEnumEntry=false, isLocal=false, isTopLevel=true, isTrait=false, name=C, superNames=[]]
TYPE_PARAMETER_LIST:
TYPE_PARAMETER:[fqName=null, isInVariance=false, isOutVariance=false, name=T]
CLASS_BODY:
+4
View File
@@ -1 +1,5 @@
PsiJetFileStubImpl[package=some.test]
PACKAGE_DIRECTIVE:
DOT_QUALIFIED_EXPRESSION:
REFERENCE_EXPRESSION:[referencedName=some]
REFERENCE_EXPRESSION:[referencedName=test]
@@ -1,5 +1,6 @@
PsiJetFileStubImpl[package=]
OBJECT_DECLARATION:PsiJetObjectStubImpl[top name=null fqName=<no name> superNames=[]]
CLASS_BODY
FUN:PsiJetFunctionStubImpl[name=testing]
VALUE_PARAMETER_LIST
PACKAGE_DIRECTIVE:
OBJECT_DECLARATION:[fqName=<no name>, isClassObject=false, isLocal=false, isObjectLiteral=false, isTopLevel=true, name=null, superNames=[]]
CLASS_BODY:
FUN:[fqName=null, hasBlockBody=false, hasBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=false, isTopLevel=false, name=testing]
VALUE_PARAMETER_LIST:
@@ -1,5 +1,12 @@
PsiJetFileStubImpl[package=]
FUN:PsiJetFunctionStubImpl[top fqName=some name=some]
VALUE_PARAMETER_LIST
VALUE_PARAMETER:PsiJetParameterStubImpl[val name=t typeText=Int defaultValue=null]
VALUE_PARAMETER:PsiJetParameterStubImpl[val name=other typeText=String defaultValue="hello"]
PACKAGE_DIRECTIVE:
FUN:[fqName=some, hasBlockBody=true, hasBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=false, isTopLevel=true, name=some]
VALUE_PARAMETER_LIST:
VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrValNode=false, isMutable=false, name=t]
TYPE_REFERENCE:
USER_TYPE:[isAbsoluteInRootPackage=false]
REFERENCE_EXPRESSION:[referencedName=Int]
VALUE_PARAMETER:[fqName=null, hasDefaultValue=true, hasValOrValNode=false, isMutable=false, name=other]
TYPE_REFERENCE:
USER_TYPE:[isAbsoluteInRootPackage=false]
REFERENCE_EXPRESSION:[referencedName=String]
+6 -4
View File
@@ -1,5 +1,7 @@
PsiJetFileStubImpl[package=]
CLASS:PsiJetClassStubImpl[name=A fqn=A superNames=[]]
CLASS_BODY
CLASS:PsiJetClassStubImpl[inner name=B fqn=A.B superNames=[]]
CLASS_BODY
PACKAGE_DIRECTIVE:
CLASS:[fqName=A, isEnumEntry=false, isLocal=false, isTopLevel=true, isTrait=false, name=A, superNames=[]]
CLASS_BODY:
CLASS:[fqName=A.B, isEnumEntry=false, isLocal=false, isTopLevel=false, isTrait=false, name=B, superNames=[]]
MODIFIER_LIST:[inner]
CLASS_BODY:
+6 -5
View File
@@ -1,6 +1,7 @@
PsiJetFileStubImpl[package=]
CLASS:PsiJetClassStubImpl[name=A fqn=A superNames=[]]
CLASS:PsiJetClassStubImpl[trait name=T fqn=T superNames=[]]
FUN:PsiJetFunctionStubImpl[top fqName=foo name=foo]
VALUE_PARAMETER_LIST
CLASS:PsiJetClassStubImpl[local name=Test fqn=null superNames=[AT]]
PACKAGE_DIRECTIVE:
CLASS:[fqName=A, isEnumEntry=false, isLocal=false, isTopLevel=true, isTrait=false, name=A, superNames=[]]
CLASS:[fqName=T, isEnumEntry=false, isLocal=false, isTopLevel=true, isTrait=true, name=T, superNames=[]]
FUN:[fqName=foo, hasBlockBody=true, hasBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=false, isTopLevel=true, name=foo]
VALUE_PARAMETER_LIST:
CLASS:[fqName=null, isEnumEntry=false, isLocal=true, isTopLevel=false, isTrait=false, name=Test, superNames=[A, T]]
@@ -1,6 +1,7 @@
PsiJetFileStubImpl[package=]
CLASS:PsiJetClassStubImpl[name=A fqn=A superNames=[]]
CLASS:PsiJetClassStubImpl[trait name=T fqn=T superNames=[]]
FUN:PsiJetFunctionStubImpl[top fqName=foo name=foo]
VALUE_PARAMETER_LIST
CLASS:PsiJetClassStubImpl[local name=Test fqn=null superNames=[AT]]
PACKAGE_DIRECTIVE:
CLASS:[fqName=A, isEnumEntry=false, isLocal=false, isTopLevel=true, isTrait=false, name=A, superNames=[]]
CLASS:[fqName=T, isEnumEntry=false, isLocal=false, isTopLevel=true, isTrait=true, name=T, superNames=[]]
FUN:[fqName=foo, hasBlockBody=true, hasBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=false, isTopLevel=true, name=foo]
VALUE_PARAMETER_LIST:
CLASS:[fqName=null, isEnumEntry=false, isLocal=true, isTopLevel=false, isTrait=false, name=Test, superNames=[A, T]]
@@ -1,6 +1,7 @@
PsiJetFileStubImpl[package=]
CLASS:PsiJetClassStubImpl[name=A fqn=A superNames=[]]
CLASS:PsiJetClassStubImpl[trait name=T fqn=T superNames=[]]
FUN:PsiJetFunctionStubImpl[top fqName=foo name=foo]
VALUE_PARAMETER_LIST
OBJECT_DECLARATION:PsiJetObjectStubImpl[local name=O fqName=null superNames=[AT]]
PACKAGE_DIRECTIVE:
CLASS:[fqName=A, isEnumEntry=false, isLocal=false, isTopLevel=true, isTrait=false, name=A, superNames=[]]
CLASS:[fqName=T, isEnumEntry=false, isLocal=false, isTopLevel=true, isTrait=true, name=T, superNames=[]]
FUN:[fqName=foo, hasBlockBody=true, hasBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=false, isTopLevel=true, name=foo]
VALUE_PARAMETER_LIST:
OBJECT_DECLARATION:[fqName=null, isClassObject=false, isLocal=true, isObjectLiteral=false, isTopLevel=false, name=O, superNames=[A, T]]
@@ -1,5 +1,16 @@
PsiJetFileStubImpl[package=]
FUN:PsiJetFunctionStubImpl[top fqName=foo name=foo]
ANNOTATION_ENTRY:PsiJetAnnotationStubImpl[shortName=Deprecated]
ANNOTATION_ENTRY:PsiJetAnnotationStubImpl[shortName=Override]
VALUE_PARAMETER_LIST:PsiJetParameterListStubImpl
PACKAGE_DIRECTIVE:
FUN:[fqName=foo, hasBlockBody=true, hasBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=false, isTopLevel=true, name=foo]
MODIFIER_LIST:[]
ANNOTATION:
ANNOTATION_ENTRY:[hasValueArguments=false, shortName=Deprecated]
CONSTRUCTOR_CALLEE:
TYPE_REFERENCE:
USER_TYPE:[isAbsoluteInRootPackage=false]
REFERENCE_EXPRESSION:[referencedName=Deprecated]
ANNOTATION_ENTRY:[hasValueArguments=false, shortName=Override]
CONSTRUCTOR_CALLEE:
TYPE_REFERENCE:
USER_TYPE:[isAbsoluteInRootPackage=false]
REFERENCE_EXPRESSION:[referencedName=Override]
VALUE_PARAMETER_LIST:
+15 -4
View File
@@ -1,5 +1,16 @@
PsiJetFileStubImpl[package=]
CLASS:PsiJetClassStubImpl[name=A fqn=A superNames=[]]
CLASS:PsiJetClassStubImpl[trait name=T fqn=T superNames=[]]
OBJECT_DECLARATION:PsiJetObjectStubImpl[top name=Test fqName=Test superNames=[AT]]
CLASS_BODY
PACKAGE_DIRECTIVE:
CLASS:[fqName=A, isEnumEntry=false, isLocal=false, isTopLevel=true, isTrait=false, name=A, superNames=[]]
CLASS:[fqName=T, isEnumEntry=false, isLocal=false, isTopLevel=true, isTrait=true, name=T, superNames=[]]
OBJECT_DECLARATION:[fqName=Test, isClassObject=false, isLocal=false, isObjectLiteral=false, isTopLevel=true, name=Test, superNames=[A, T]]
DELEGATION_SPECIFIER_LIST:
DELEGATOR_SUPER_CALL:
CONSTRUCTOR_CALLEE:
TYPE_REFERENCE:
USER_TYPE:[isAbsoluteInRootPackage=false]
REFERENCE_EXPRESSION:[referencedName=A]
DELEGATOR_SUPER_CLASS:
TYPE_REFERENCE:
USER_TYPE:[isAbsoluteInRootPackage=false]
REFERENCE_EXPRESSION:[referencedName=T]
CLASS_BODY:
@@ -1,7 +1,9 @@
PsiJetFileStubImpl[package=]
CLASS:PsiJetClassStubImpl[name=Test fqn=Test superNames=[]]
VALUE_PARAMETER_LIST
CLASS_BODY
PROPERTY:PsiJetPropertyStubImpl[val name=test typeText=null bodyText=12]
FUN:PsiJetFunctionStubImpl[name=more]
VALUE_PARAMETER_LIST
PACKAGE_DIRECTIVE:
CLASS:[fqName=Test, isEnumEntry=false, isLocal=false, isTopLevel=true, isTrait=false, name=Test, superNames=[]]
VALUE_PARAMETER_LIST:
CLASS_BODY:
PROPERTY:[fqName=Test.test, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReceiverTypeRef=false, hasReturnTypeRef=false, isTopLevel=false, isVar=false, name=test]
ANONYMOUS_INITIALIZER:
FUN:[fqName=Test.more, hasBlockBody=true, hasBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=false, isTopLevel=false, name=more]
VALUE_PARAMETER_LIST:
@@ -1,2 +1,3 @@
PsiJetFileStubImpl[package=]
PROPERTY:PsiJetPropertyStubImpl[val top fqName=a name=a typeText=null bodyText=null]
PACKAGE_DIRECTIVE:
PROPERTY:[fqName=a, hasDelegate=true, hasDelegateExpression=true, hasInitializer=false, hasReceiverTypeRef=false, hasReturnTypeRef=false, isTopLevel=true, isVar=false, name=a]
@@ -1,3 +1,7 @@
PsiJetFileStubImpl[package=]
FUN:PsiJetFunctionStubImpl[top fqName=some ext name=some]
VALUE_PARAMETER_LIST
PACKAGE_DIRECTIVE:
FUN:[fqName=some, hasBlockBody=false, hasBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=true, isTopLevel=true, name=some]
TYPE_REFERENCE:
USER_TYPE:[isAbsoluteInRootPackage=false]
REFERENCE_EXPRESSION:[referencedName=DoubleArray]
VALUE_PARAMETER_LIST:
+5 -1
View File
@@ -1,2 +1,6 @@
PsiJetFileStubImpl[package=test.testing]
PROPERTY:PsiJetPropertyStubImpl[val top fqName=test.testing.some name=some typeText=null bodyText=12]
PACKAGE_DIRECTIVE:
DOT_QUALIFIED_EXPRESSION:
REFERENCE_EXPRESSION:[referencedName=test]
REFERENCE_EXPRESSION:[referencedName=testing]
PROPERTY:[fqName=test.testing.some, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReceiverTypeRef=false, hasReturnTypeRef=false, isTopLevel=true, isVar=false, name=some]
@@ -1,7 +1,18 @@
PsiJetFileStubImpl[package=test]
CLASS:PsiJetClassStubImpl[name=A fqn=test.A superNames=[]]
VALUE_PARAMETER_LIST
VALUE_PARAMETER:PsiJetParameterStubImpl[val name=b fqName=test.A.b typeText=Int defaultValue=null]
VALUE_PARAMETER:PsiJetParameterStubImpl[var name=c fqName=test.A.c typeText=String defaultValue=null]
VALUE_PARAMETER:PsiJetParameterStubImpl[val name=justParam typeText=Int defaultValue=null]
CLASS_BODY
PACKAGE_DIRECTIVE:
REFERENCE_EXPRESSION:[referencedName=test]
CLASS:[fqName=test.A, isEnumEntry=false, isLocal=false, isTopLevel=true, isTrait=false, name=A, superNames=[]]
VALUE_PARAMETER_LIST:
VALUE_PARAMETER:[fqName=test.A.b, hasDefaultValue=false, hasValOrValNode=true, isMutable=false, name=b]
TYPE_REFERENCE:
USER_TYPE:[isAbsoluteInRootPackage=false]
REFERENCE_EXPRESSION:[referencedName=Int]
VALUE_PARAMETER:[fqName=test.A.c, hasDefaultValue=false, hasValOrValNode=true, isMutable=true, name=c]
TYPE_REFERENCE:
USER_TYPE:[isAbsoluteInRootPackage=false]
REFERENCE_EXPRESSION:[referencedName=String]
VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrValNode=false, isMutable=false, name=justParam]
TYPE_REFERENCE:
USER_TYPE:[isAbsoluteInRootPackage=false]
REFERENCE_EXPRESSION:[referencedName=Int]
CLASS_BODY:
@@ -1,4 +1,14 @@
PsiJetFileStubImpl[package=]
FUN:PsiJetFunctionStubImpl[top fqName=foo name=foo]
ANNOTATION_ENTRY:PsiJetAnnotationStubImpl[shortName=Deprecated]
VALUE_PARAMETER_LIST
PACKAGE_DIRECTIVE:
FUN:[fqName=foo, hasBlockBody=true, hasBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=false, isTopLevel=true, name=foo]
MODIFIER_LIST:[]
ANNOTATION_ENTRY:[hasValueArguments=false, shortName=Deprecated]
CONSTRUCTOR_CALLEE:
TYPE_REFERENCE:
USER_TYPE:[isAbsoluteInRootPackage=false]
USER_TYPE:[isAbsoluteInRootPackage=false]
USER_TYPE:[isAbsoluteInRootPackage=false]
REFERENCE_EXPRESSION:[referencedName=java]
REFERENCE_EXPRESSION:[referencedName=lang]
REFERENCE_EXPRESSION:[referencedName=Deprecated]
VALUE_PARAMETER_LIST:
+6 -4
View File
@@ -1,5 +1,7 @@
PsiJetFileStubImpl[package=]
CLASS:PsiJetClassStubImpl[enumClass name=Test fqn=Test superNames=[]]
CLASS_BODY
ENUM_ENTRY:PsiJetClassStubImpl[enumEntry name=First fqn=Test.First superNames=[]]
ENUM_ENTRY:PsiJetClassStubImpl[enumEntry name=Second fqn=Test.Second superNames=[]]
PACKAGE_DIRECTIVE:
CLASS:[fqName=Test, isEnumEntry=false, isLocal=false, isTopLevel=true, isTrait=false, name=Test, superNames=[]]
MODIFIER_LIST:[enum]
CLASS_BODY:
ENUM_ENTRY:[fqName=Test.First, isEnumEntry=true, isLocal=false, isTopLevel=false, isTrait=false, name=First, superNames=[]]
ENUM_ENTRY:[fqName=Test.Second, isEnumEntry=true, isLocal=false, isTopLevel=false, isTrait=false, name=Second, superNames=[]]