Skip to content
This repository was archived by the owner on Dec 15, 2022. It is now read-only.
This repository was archived by the owner on Dec 15, 2022. It is now read-only.

Class body of annotation class is not correctly parsed #182

@felixhao28

Description

@felixhao28

Description

In the class body of an annotation class, parameters are not parsed as a method/field/parameter declaration as it should be. This results in scope errors like mistaking wildcard generic parameter as ternary conditional operator.

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.TYPE, ElementType.METHOD })
@Documented
public @interface EventListener {
    Class<?>[] events() default {};
    int order() default Integer.MAX_VALUE;
    boolean async() default false;
    String condition() default "";
}

class A {
    Class<?>[] events() {
        
    }
    int order() {
        
    }
    boolean async() {
        
    }
    String condition() {
        
    }
}

image

image

Expected behavior: [What you expect to happen]

Both events should be parsed as some kind of declaration. But it is actually parsed as "method-call" in annotation, along with other errors like "?".

Versions

d48e713

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions