[java-psi] Add implicit classes to preceding comment set

Fixes IDEA-355602 Implicit class parsing: Javadoc is not attached to the method

GitOrigin-RevId: bd18f57e8106618aa741203e6cb3f4cd8cffe13d
This commit is contained in:
Tagir Valeev
2024-07-01 15:53:16 +02:00
committed by intellij-monorepo-bot
parent 23e3c13432
commit 013d13142d
7 changed files with 131 additions and 3 deletions

View File

@@ -17,7 +17,8 @@ import static com.intellij.psi.tree.ParentAwareTokenSet.orSet;
public class WhiteSpaceAndCommentSetHolder {
public static final WhiteSpaceAndCommentSetHolder INSTANCE = new WhiteSpaceAndCommentSetHolder();
private static final ParentAwareTokenSet PRECEDING_COMMENT_SET =
orSet(create(BasicJavaElementType.BASIC_MODULE), BasicElementTypes.BASIC_FULL_MEMBER_BIT_SET);
orSet(create(BasicJavaElementType.BASIC_MODULE, BasicJavaElementType.BASIC_IMPLICIT_CLASS),
BasicElementTypes.BASIC_FULL_MEMBER_BIT_SET);
private static final ParentAwareTokenSet TRAILING_COMMENT_SET =
orSet(create(BasicJavaElementType.BASIC_PACKAGE_STATEMENT), BasicElementTypes.BASIC_IMPORT_STATEMENT_BASE_BIT_SET,

View File

@@ -139,4 +139,7 @@ public abstract class AbstractBasicClassParsingTest extends AbstractBasicJavaPar
public void testImplicitClass5() {
doTest(true);
}
public void testImplicitClassJavaDoc() {
doTest(true);
}
}

View File

@@ -1,4 +1,6 @@
import java.util.Objects;// "Convert record to class" "true-preview"
import java.util.Objects;
// "Convert record to class" "true-preview"
final class Point {
private final double x;
private final double y;

View File

@@ -1,4 +1,6 @@
import java.util.Objects;// "Convert record to class" "true-preview"
import java.util.Objects;
// "Convert record to class" "true-preview"
public final class Point {
private final int x;
private final int y;

View File

@@ -0,0 +1,6 @@
/**
* Main method
*/
public static void main() {
System.out.println("Hello");
}

View File

@@ -0,0 +1,57 @@
PsiJavaFile:ImplicitClassJavaDoc.java
PsiImportList
<empty list>
PsiImplicitClass
PsiMethod:main
PsiDocComment
PsiDocToken:DOC_COMMENT_START('/**')
PsiWhiteSpace('\n ')
PsiDocToken:DOC_COMMENT_LEADING_ASTERISKS('*')
PsiDocToken:DOC_COMMENT_DATA(' Main method')
PsiWhiteSpace('\n ')
PsiDocToken:DOC_COMMENT_END('*/')
PsiWhiteSpace('\n')
PsiModifierList:public static
PsiKeyword:public('public')
PsiWhiteSpace(' ')
PsiKeyword:static('static')
PsiTypeParameterList
<empty list>
PsiWhiteSpace(' ')
PsiTypeElement:void
PsiKeyword:void('void')
PsiWhiteSpace(' ')
PsiIdentifier:main('main')
PsiParameterList:()
PsiJavaToken:LPARENTH('(')
PsiJavaToken:RPARENTH(')')
PsiReferenceList
<empty list>
PsiWhiteSpace(' ')
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace('\n ')
PsiExpressionStatement
PsiMethodCallExpression:System.out.println("Hello")
PsiReferenceExpression:System.out.println
PsiReferenceExpression:System.out
PsiReferenceExpression:System
PsiReferenceParameterList
<empty list>
PsiIdentifier:System('System')
PsiJavaToken:DOT('.')
PsiReferenceParameterList
<empty list>
PsiIdentifier:out('out')
PsiJavaToken:DOT('.')
PsiReferenceParameterList
<empty list>
PsiIdentifier:println('println')
PsiExpressionList
PsiJavaToken:LPARENTH('(')
PsiLiteralExpression:"Hello"
PsiJavaToken:STRING_LITERAL('"Hello"')
PsiJavaToken:RPARENTH(')')
PsiJavaToken:SEMICOLON(';')
PsiWhiteSpace('\n')
PsiJavaToken:RBRACE('}')

View File

@@ -0,0 +1,57 @@
java.FILE
IMPORT_LIST
<empty list>
IMPLICIT_CLASS
METHOD
DOC_COMMENT
DOC_COMMENT_START
WHITE_SPACE
DOC_COMMENT_LEADING_ASTERISKS
DOC_COMMENT_DATA
WHITE_SPACE
DOC_COMMENT_END
WHITE_SPACE
MODIFIER_LIST
PUBLIC_KEYWORD
WHITE_SPACE
STATIC_KEYWORD
TYPE_PARAMETER_LIST
<empty list>
WHITE_SPACE
TYPE
VOID_KEYWORD
WHITE_SPACE
IDENTIFIER
PARAMETER_LIST
LPARENTH
RPARENTH
THROWS_LIST
<empty list>
WHITE_SPACE
CODE_BLOCK
LBRACE
WHITE_SPACE
EXPRESSION_STATEMENT
METHOD_CALL_EXPRESSION
REFERENCE_EXPRESSION
REFERENCE_EXPRESSION
REFERENCE_EXPRESSION
REFERENCE_PARAMETER_LIST
<empty list>
IDENTIFIER
DOT
REFERENCE_PARAMETER_LIST
<empty list>
IDENTIFIER
DOT
REFERENCE_PARAMETER_LIST
<empty list>
IDENTIFIER
EXPRESSION_LIST
LPARENTH
LITERAL_EXPRESSION
STRING_LITERAL
RPARENTH
SEMICOLON
WHITE_SPACE
RBRACE