mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
EA-40568 (skip incorrect parameter names)
This commit is contained in:
@@ -52,6 +52,6 @@ public class ClassFileStubBuilder implements BinaryFileStubBuilder {
|
||||
|
||||
@Override
|
||||
public int getStubVersion() {
|
||||
return JavaFileElementType.STUB_VERSION + 4;
|
||||
return JavaFileElementType.STUB_VERSION + 5;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,8 +15,6 @@
|
||||
*/
|
||||
package com.intellij.psi.impl.compiled;
|
||||
|
||||
import com.intellij.lexer.JavaLexer;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.source.tree.TreeElement;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
@@ -53,9 +51,7 @@ class ClsIdentifierImpl extends ClsElementImpl implements PsiIdentifier, PsiJava
|
||||
}
|
||||
|
||||
private boolean isCorrectName(String name) {
|
||||
return name != null &&
|
||||
StringUtil.isJavaIdentifier(name) &&
|
||||
!JavaLexer.isKeyword(name, ((PsiJavaFile)getContainingFile()).getLanguageLevel());
|
||||
return name != null && ClsParsingUtil.isJavaIdentifier(name, ((PsiJavaFile)getContainingFile()).getLanguageLevel());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -18,7 +18,9 @@ package com.intellij.psi.impl.compiled;
|
||||
import com.intellij.lang.PsiBuilder;
|
||||
import com.intellij.lang.java.parser.JavaParser;
|
||||
import com.intellij.lang.java.parser.JavaParserUtil;
|
||||
import com.intellij.lexer.JavaLexer;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.pom.java.LanguageLevel;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.PsiJavaParserFacadeImpl;
|
||||
@@ -160,4 +162,8 @@ public class ClsParsingUtil {
|
||||
LOG.error("Unable to compute expression value: " + expr);
|
||||
return null;
|
||||
}
|
||||
|
||||
public static boolean isJavaIdentifier(@NotNull String identifier, @NotNull LanguageLevel level) {
|
||||
return StringUtil.isJavaIdentifier(identifier) && !JavaLexer.isKeyword(identifier, level);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -426,13 +426,8 @@ public class StubBuildingVisitor<T> extends ClassVisitor {
|
||||
String[] thrownTypes = buildThrowsList(exceptions, throwables, parsedViaGenericSignature);
|
||||
new PsiClassReferenceListStubImpl(JavaStubElementTypes.THROWS_LIST, stub, thrownTypes, PsiReferenceList.Role.THROWS_LIST);
|
||||
|
||||
final boolean isEnumConstructor = isConstructor && myResult.isEnum();
|
||||
|
||||
int localVarIgnoreCount = (access & Opcodes.ACC_STATIC) != 0 ? 0 : 1;
|
||||
if (isEnumConstructor) {
|
||||
localVarIgnoreCount += 2;
|
||||
}
|
||||
final int paramIgnoreCount = isEnumConstructor? 2 : isNonStaticInnerClassConstructor ? 1 : 0;
|
||||
final int localVarIgnoreCount = (access & Opcodes.ACC_STATIC) != 0 ? 0 : isConstructor && myResult.isEnum() ? 3 : 1;
|
||||
final int paramIgnoreCount = isConstructor && myResult.isEnum() ? 2 : isNonStaticInnerClassConstructor ? 1 : 0;
|
||||
return new AnnotationParamCollectingVisitor(stub, modList, localVarIgnoreCount, paramIgnoreCount, paramCount, paramStubs);
|
||||
}
|
||||
|
||||
@@ -610,10 +605,10 @@ public class StubBuildingVisitor<T> extends ClassVisitor {
|
||||
|
||||
private AnnotationParamCollectingVisitor(final PsiMethodStub owner,
|
||||
final PsiModifierListStub modList,
|
||||
int ignoreCount,
|
||||
int paramIgnoreCount,
|
||||
int paramCount,
|
||||
PsiParameterStubImpl[] paramStubs) {
|
||||
final int ignoreCount,
|
||||
final int paramIgnoreCount,
|
||||
final int paramCount,
|
||||
final PsiParameterStubImpl[] paramStubs) {
|
||||
super(Opcodes.ASM4);
|
||||
myOwner = owner;
|
||||
myModList = modList;
|
||||
@@ -649,10 +644,14 @@ public class StubBuildingVisitor<T> extends ClassVisitor {
|
||||
// long and double variables increase the index by 2, not by 1
|
||||
int paramIndex = (index - myIgnoreCount == myUsedParamSize) ? myUsedParamCount : index - myIgnoreCount;
|
||||
if (paramIndex >= myParamCount) return;
|
||||
PsiParameterStubImpl parameterStub = myParamStubs[paramIndex];
|
||||
if (parameterStub != null) {
|
||||
parameterStub.setName(name);
|
||||
|
||||
if (ClsParsingUtil.isJavaIdentifier(name, LanguageLevel.HIGHEST)) {
|
||||
PsiParameterStubImpl parameterStub = myParamStubs[paramIndex];
|
||||
if (parameterStub != null) {
|
||||
parameterStub.setName(name);
|
||||
}
|
||||
}
|
||||
|
||||
myUsedParamCount = paramIndex+1;
|
||||
if ("D".equals(desc) || "J".equals(desc)) {
|
||||
myUsedParamSize += 2;
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
|
||||
// IntelliJ API Decompiler stub source generated from a class file
|
||||
// Implementation of methods is not available
|
||||
|
||||
package com.google.android.maps;
|
||||
|
||||
public class OverlayItem {
|
||||
protected final com.google.android.maps.GeoPoint mPoint;
|
||||
protected final java.lang.String mTitle;
|
||||
protected final java.lang.String mSnippet;
|
||||
protected android.graphics.drawable.Drawable mMarker;
|
||||
public static final int ITEM_STATE_FOCUSED_MASK = 4;
|
||||
public static final int ITEM_STATE_SELECTED_MASK = 2;
|
||||
public static final int ITEM_STATE_PRESSED_MASK = 1;
|
||||
|
||||
public OverlayItem(com.google.android.maps.GeoPoint geoPoint, java.lang.String s, java.lang.String s1) { /* compiled code */ }
|
||||
|
||||
public void setMarker(android.graphics.drawable.Drawable drawable) { /* compiled code */ }
|
||||
|
||||
public android.graphics.drawable.Drawable getMarker(int i) { /* compiled code */ }
|
||||
|
||||
public static void setState(android.graphics.drawable.Drawable drawable, int i) { /* compiled code */ }
|
||||
|
||||
public java.lang.String getTitle() { /* compiled code */ }
|
||||
|
||||
public java.lang.String getSnippet() { /* compiled code */ }
|
||||
|
||||
public com.google.android.maps.GeoPoint getPoint() { /* compiled code */ }
|
||||
|
||||
public java.lang.String routableAddress() { /* compiled code */ }
|
||||
}
|
||||
Binary file not shown.
@@ -37,6 +37,7 @@ public class ClsMirrorBuildingTest extends LightIdeaTestCase {
|
||||
public void testExtMethods() { doTest(); }
|
||||
public void testMethodReceiver() { doTest(); }
|
||||
public void testPackageInfo() { doTest("package-info"); }
|
||||
public void testEA40568() { doTest(); }
|
||||
|
||||
private void doTest() {
|
||||
doTest(getTestName(false));
|
||||
|
||||
Reference in New Issue
Block a user