Commit 3fdddc56 authored by Roman Shevchenko's avatar Roman Shevchenko
Browse files

[java] corrects parameter name detection in stub builder; better tests

parent 9355fa6c
Showing with 139 additions and 116 deletions
+139 -116
......@@ -643,9 +643,9 @@ public class StubBuildingVisitor<T> extends ClassVisitor {
@Override
public void visitParameter(String name, int access) {
if (!isSet(access, Opcodes.ACC_SYNTHETIC) && myParamNameIndex < myParamCount) {
setParameterName(name, myParamNameIndex);
myParamNameIndex++;
int paramIndex = myParamNameIndex++ - myParamIgnoreCount;
if (!isSet(access, Opcodes.ACC_SYNTHETIC) && paramIndex >= 0 && paramIndex < myParamCount) {
setParameterName(name, paramIndex);
}
}
......@@ -663,8 +663,7 @@ public class StubBuildingVisitor<T> extends ClassVisitor {
private void setParameterName(String name, int paramIndex) {
if (ClsParsingUtil.isJavaIdentifier(name, LanguageLevel.HIGHEST)) {
PsiParameterStubImpl stub = myParamStubs[paramIndex];
if (stub != null) stub.setName(name);
myParamStubs[paramIndex].setName(name);
}
}
......
File deleted
File deleted
public class AnnotatedEnumConstructor {
private enum MyEnum {
VAL("+", "-");
MyEnum(String s1, @Deprecated String s2) { }
}
}
\ No newline at end of file
PsiJavaFileStub []
PsiClassStub[name=AnnotatedEnumConstructor fqn=AnnotatedEnumConstructor]
PsiModifierListStub[mask=1]
PsiTypeParameterListStub
PsiRefListStub[EXTENDS_LIST:]
PsiRefListStub[IMPLEMENTS_LIST:]
PsiClassStub[enum name=MyEnum fqn=AnnotatedEnumConstructor.MyEnum]
PsiModifierListStub[mask=26]
PsiTypeParameterListStub
PsiRefListStub[EXTENDS_LIST:]
PsiRefListStub[IMPLEMENTS_LIST:]
PsiFieldStub[enumconst VAL:AnnotatedEnumConstructor.MyEnum]
PsiModifierListStub[mask=25]
PsiMethodStub[cons MyEnum:void]
PsiModifierListStub[mask=2]
PsiTypeParameterListStub
PsiParameterListStub
PsiParameterStub[p1:java.lang.String]
PsiModifierListStub[mask=0]
PsiParameterStub[p2:java.lang.String]
PsiModifierListStub[mask=0]
PsiAnnotationStub[@java.lang.Deprecated]
PsiRefListStub[THROWS_LIST:]
PsiMethodStub[cons AnnotatedEnumConstructor:void]
PsiModifierListStub[mask=1]
PsiTypeParameterListStub
PsiParameterListStub
PsiRefListStub[THROWS_LIST:]
\ No newline at end of file
import org.jetbrains.annotations.NotNull;
public class AnnotatedNonStaticInnerClassConstructor {
public class Inner {
public Inner(@NotNull Integer param) { }
public @NotNull String foo() {
return "";
}
}
}
\ No newline at end of file
PsiJavaFileStub []
PsiClassStub[name=AnnotatedNonStaticInnerClassConstructor fqn=AnnotatedNonStaticInnerClassConstructor]
PsiModifierListStub[mask=1]
PsiTypeParameterListStub
PsiRefListStub[EXTENDS_LIST:]
PsiRefListStub[IMPLEMENTS_LIST:]
PsiClassStub[name=Inner fqn=AnnotatedNonStaticInnerClassConstructor.Inner]
PsiModifierListStub[mask=1]
PsiTypeParameterListStub
PsiRefListStub[EXTENDS_LIST:]
PsiRefListStub[IMPLEMENTS_LIST:]
PsiMethodStub[cons Inner:void]
PsiModifierListStub[mask=1]
PsiTypeParameterListStub
PsiParameterListStub
PsiParameterStub[param:java.lang.Integer]
PsiModifierListStub[mask=0]
PsiAnnotationStub[@org.jetbrains.annotations.NotNull]
PsiRefListStub[THROWS_LIST:]
PsiMethodStub[foo:java.lang.String]
PsiModifierListStub[mask=1]
PsiAnnotationStub[@org.jetbrains.annotations.NotNull]
PsiTypeParameterListStub
PsiParameterListStub
PsiRefListStub[THROWS_LIST:]
PsiMethodStub[cons AnnotatedNonStaticInnerClassConstructor:void]
PsiModifierListStub[mask=1]
PsiTypeParameterListStub
PsiParameterListStub
PsiRefListStub[THROWS_LIST:]
File deleted
PsiJavaFileStub []
PsiClassStub[enum name=EParams fqn=EParams]
PsiModifierListStub[mask=17]
PsiTypeParameterListStub
PsiRefListStub[EXTENDS_LIST:]
PsiRefListStub[IMPLEMENTS_LIST:]
PsiFieldStub[enumconst C:EParams]
PsiModifierListStub[mask=25]
PsiMethodStub[cons EParams:void]
PsiModifierListStub[mask=2]
PsiTypeParameterListStub
PsiParameterListStub
PsiParameterStub[first:int]
PsiModifierListStub[mask=0]
PsiParameterStub[second:java.lang.String]
PsiModifierListStub[mask=0]
PsiParameterStub[last:java.lang.Boolean]
PsiModifierListStub[mask=0]
PsiRefListStub[THROWS_LIST:]
\ No newline at end of file
File deleted
File deleted
File deleted
......@@ -7,4 +7,10 @@ class GroovyStuff {
private class Inner {
Inner(String s1, @Deprecated String s2) { }
}
GroovyStuff(long longConstructorParam, @Deprecated String stringConstructorParam) { }
def foo(long longMethodParam, @Deprecated int intMethodParam) { }
static def bar(GroovyStuff objectStaticParam, @Deprecated int intStaticParam) { }
}
\ No newline at end of file
......@@ -44,4 +44,29 @@ PsiJavaFileStub []
PsiModifierListStub[mask=1]
PsiTypeParameterListStub
PsiParameterListStub
PsiParameterStub[longConstructorParam:long]
PsiModifierListStub[mask=0]
PsiParameterStub[stringConstructorParam:java.lang.String]
PsiModifierListStub[mask=0]
PsiAnnotationStub[@java.lang.Deprecated]
PsiRefListStub[THROWS_LIST:]
PsiMethodStub[foo:java.lang.Object]
PsiModifierListStub[mask=1]
PsiTypeParameterListStub
PsiParameterListStub
PsiParameterStub[longMethodParam:long]
PsiModifierListStub[mask=0]
PsiParameterStub[intMethodParam:int]
PsiModifierListStub[mask=0]
PsiAnnotationStub[@java.lang.Deprecated]
PsiRefListStub[THROWS_LIST:]
PsiMethodStub[bar:java.lang.Object]
PsiModifierListStub[mask=9]
PsiTypeParameterListStub
PsiParameterListStub
PsiParameterStub[objectStaticParam:GroovyStuff]
PsiModifierListStub[mask=0]
PsiParameterStub[intStaticParam:int]
PsiModifierListStub[mask=0]
PsiAnnotationStub[@java.lang.Deprecated]
PsiRefListStub[THROWS_LIST:]
\ No newline at end of file
File deleted
PsiJavaFileStub []
PsiClassStub[interface name=IParams fqn=IParams]
PsiModifierListStub[mask=1025]
PsiTypeParameterListStub
PsiRefListStub[EXTENDS_LIST:]
PsiRefListStub[IMPLEMENTS_LIST:]
PsiMethodStub[m:void]
PsiModifierListStub[mask=1025]
PsiTypeParameterListStub
PsiParameterListStub
PsiParameterStub[first:int]
PsiModifierListStub[mask=0]
PsiParameterStub[second:java.lang.String]
PsiModifierListStub[mask=0]
PsiParameterStub[last:java.lang.Boolean]
PsiModifierListStub[mask=0]
PsiRefListStub[THROWS_LIST:]
\ No newline at end of file
class Parameters {
class Inner {
Inner(double doubleInnerParam, @Deprecated Object objectInnerParam) { }
}
enum Enum {
E(0.0, "");
Enum(double doubleEnumParam, @Deprecated String stringEnumParam) { }
}
interface Inter {
void m(long longInterfaceParam, @Deprecated String stringInterfaceParam);
}
Parameters(long longConstructorParam, @Deprecated String stringConstructorParam) { }
void foo(long longMethodParam, @Deprecated int intMethodParam) { }
static void bar(Parameters objectStaticParam, @Deprecated int intStaticParam) { }
}
\ No newline at end of file
PsiJavaFileStub []
PsiClassStub[name=Parameters fqn=Parameters]
PsiModifierListStub[mask=4096]
PsiTypeParameterListStub
PsiRefListStub[EXTENDS_LIST:]
PsiRefListStub[IMPLEMENTS_LIST:]
PsiClassStub[interface name=Inter fqn=Parameters.Inter]
PsiModifierListStub[mask=5128]
PsiTypeParameterListStub
PsiRefListStub[EXTENDS_LIST:]
PsiRefListStub[IMPLEMENTS_LIST:]
PsiMethodStub[m:void]
PsiModifierListStub[mask=1025]
PsiTypeParameterListStub
PsiParameterListStub
PsiParameterStub[longInterfaceParam:long]
PsiModifierListStub[mask=0]
PsiParameterStub[stringInterfaceParam:java.lang.String]
PsiModifierListStub[mask=0]
PsiAnnotationStub[@java.lang.Deprecated]
PsiRefListStub[THROWS_LIST:]
PsiClassStub[enum name=Enum fqn=Parameters.Enum]
PsiModifierListStub[mask=4120]
PsiTypeParameterListStub
PsiRefListStub[EXTENDS_LIST:]
PsiRefListStub[IMPLEMENTS_LIST:]
PsiFieldStub[enumconst E:Parameters.Enum]
PsiModifierListStub[mask=25]
PsiMethodStub[cons Enum:void]
PsiModifierListStub[mask=2]
PsiTypeParameterListStub
PsiParameterListStub
PsiParameterStub[doubleEnumParam:double]
PsiModifierListStub[mask=0]
PsiParameterStub[stringEnumParam:java.lang.String]
PsiModifierListStub[mask=0]
PsiAnnotationStub[@java.lang.Deprecated]
PsiRefListStub[THROWS_LIST:]
PsiClassStub[name=Inner fqn=Parameters.Inner]
PsiModifierListStub[mask=4096]
PsiTypeParameterListStub
PsiRefListStub[EXTENDS_LIST:]
PsiRefListStub[IMPLEMENTS_LIST:]
PsiMethodStub[cons Inner:void]
PsiModifierListStub[mask=4096]
PsiTypeParameterListStub
PsiParameterListStub
PsiParameterStub[doubleInnerParam:double]
PsiModifierListStub[mask=0]
PsiParameterStub[objectInnerParam:java.lang.Object]
PsiModifierListStub[mask=0]
PsiAnnotationStub[@java.lang.Deprecated]
PsiRefListStub[THROWS_LIST:]
PsiMethodStub[cons Parameters:void]
PsiModifierListStub[mask=4096]
PsiTypeParameterListStub
PsiParameterListStub
PsiParameterStub[longConstructorParam:long]
PsiModifierListStub[mask=0]
PsiParameterStub[stringConstructorParam:java.lang.String]
PsiModifierListStub[mask=0]
PsiAnnotationStub[@java.lang.Deprecated]
PsiRefListStub[THROWS_LIST:]
PsiMethodStub[foo:void]
PsiModifierListStub[mask=4096]
PsiTypeParameterListStub
PsiParameterListStub
PsiParameterStub[longMethodParam:long]
PsiModifierListStub[mask=0]
PsiParameterStub[intMethodParam:int]
PsiModifierListStub[mask=0]
PsiAnnotationStub[@java.lang.Deprecated]
PsiRefListStub[THROWS_LIST:]
PsiMethodStub[bar:void]
PsiModifierListStub[mask=4104]
PsiTypeParameterListStub
PsiParameterListStub
PsiParameterStub[objectStaticParam:Parameters]
PsiModifierListStub[mask=0]
PsiParameterStub[intStaticParam:int]
PsiModifierListStub[mask=0]
PsiAnnotationStub[@java.lang.Deprecated]
PsiRefListStub[THROWS_LIST:]
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment