IDEA-166860 Method with generics and annotation incorrectly parsed

This commit is contained in:
alexey.afanasiev
2017-02-01 16:06:45 +03:00
parent 1012d62ca7
commit 29fb1bf45f
3 changed files with 45 additions and 1 deletions
@@ -47,7 +47,7 @@ public class Annotation {
return false;
}
if (ReferenceElement.parse(builder, false, true, true, false, false) == ReferenceElement.ReferenceElementResult.FAIL) {
if (ReferenceElement.parse(builder, false, false, true, false, false) == ReferenceElement.ReferenceElementResult.FAIL) {
builder.error("Annotation name expected");
annMarker.drop();
return false;
@@ -48,4 +48,6 @@ class AnnotationsParsingTest extends GroovyParsingTestCase {
void testKeywordsAttributes() { doTest() }
void testMess() { doTest() }
void testTypeParameters() { doTest() }
}
@@ -0,0 +1,42 @@
@Deprecated <T> T bar(T a) {}
-----
Groovy script
Method
Modifiers
Annotation
PsiElement(@)('@')
Reference element
PsiElement(identifier)('Deprecated')
Annotation arguments
<empty list>
PsiWhiteSpace(' ')
Type parameter list
PsiElement(<)('<')
Type parameter
PsiElement(identifier)('T')
Type extends bounds list
<empty list>
PsiElement(>)('>')
PsiWhiteSpace(' ')
Type element
Reference element
PsiElement(identifier)('T')
PsiWhiteSpace(' ')
PsiElement(identifier)('bar')
PsiElement(()('(')
Parameter list
Parameter
Modifiers
<empty list>
Type element
Reference element
PsiElement(identifier)('T')
PsiWhiteSpace(' ')
PsiElement(identifier)('a')
PsiElement())(')')
Throw clause
<empty list>
PsiWhiteSpace(' ')
Open block
PsiElement({)('{')
PsiElement(})('}')