@@ -533,6 +533,20 @@ private boolean process(TypeDeclaration node) {
533533 return false ;
534534 }
535535
536+ /**
537+ * This is an 'Implicit' class declaration, from JEP 463.
538+ *
539+ * We use a child walker to process all class like objects, so that the walker has context of what class it is in.
540+ * This means we need to cancel processing the children and walk them ourselves in the child walker.
541+ */
542+ private boolean process (ImplicitTypeDeclaration node ) {
543+ String name = getInternalName ((ITypeBinding )node .getName ().resolveBinding (), node .getName ());
544+ SymbolReferenceWalker walker = new SymbolReferenceWalker (this , name , null , null );
545+ walker .acceptChild (node .getJavadoc ());
546+ walker .acceptChildren (node .bodyDeclarations ());
547+ return false ;
548+ }
549+
536550 /**
537551 * Right now we do not dump import range information.
538552 * The Applier does very rudimentary import management itself.
@@ -566,6 +580,7 @@ private boolean process(PackageDeclaration node) {
566580 * This is what causes ViewFrustum to add the extra ChunkRenderDispatcher.ChunkRender import:
567581 * `renderChunkFactory.new ChunkRender();`
568582 */
583+ @ SuppressWarnings ("deprecation" )
569584 private boolean process (ClassInstanceCreation node ) {
570585 if (node .getExpression () == null || node .getAST ().apiLevel () >= JLS3 && !node .getType ().isSimpleType () || node .getAST ().apiLevel () <= JLS2 && !node .getName ().isSimpleName ())
571586 return true ;
@@ -578,13 +593,13 @@ private boolean process(ClassInstanceCreation node) {
578593 acceptChildren (node .typeArguments ());
579594 name = ((SimpleType ) node .getType ()).getName ();
580595 }
581-
596+
582597 IBinding binding = name .resolveBinding ();
583598 if (binding .getKind () != IBinding .TYPE ) {
584599 error (node , "Non type binding when constructing an instance: " + binding .getName ());
585600 return false ;
586601 }
587-
602+
588603 String clsName = getInternalName ((ITypeBinding ) binding , name );
589604 builder .addClassReference (name .getStartPosition (), name .getLength (), name .toString (), clsName , true );
590605 acceptChildren (node .arguments ());
@@ -688,6 +703,7 @@ public ASTVisitor getVisitor() {
688703 @ Override public boolean visit (CreationReference node ) { return true ; }
689704 @ Override public boolean visit (Dimension node ) { return true ; }
690705 @ Override public boolean visit (DoStatement node ) { return true ; }
706+ @ Override public boolean visit (EitherOrMultiPattern node ) { return true ; }
691707 @ Override public boolean visit (EmptyStatement node ) { return true ; }
692708 @ Override public boolean visit (EnhancedForStatement node ) { return true ; }
693709 @ Override public boolean visit (EnumConstantDeclaration node ) { return true ; }
@@ -700,13 +716,16 @@ public ASTVisitor getVisitor() {
700716 @ Override public boolean visit (ForStatement node ) { return true ; }
701717 @ Override public boolean visit (GuardedPattern node ) { return true ; }
702718 @ Override public boolean visit (IfStatement node ) { return true ; }
719+ @ Override public boolean visit (ImplicitTypeDeclaration node ) { return process (node ); }
703720 @ Override public boolean visit (ImportDeclaration node ) { return process (node ); }
704721 @ Override public boolean visit (InfixExpression node ) { return true ; }
705722 @ Override public boolean visit (Initializer node ) { return process (node ); }
706723 @ Override public boolean visit (InstanceofExpression node ) { return true ; }
707724 @ Override public boolean visit (PatternInstanceofExpression node ) { return true ; }
708725 @ Override public boolean visit (IntersectionType node ) { return true ; }
709726 @ Override public boolean visit (Javadoc node ) { return true ; }
727+ @ Override public boolean visit (JavaDocRegion node ) { return true ; }
728+ @ Override public boolean visit (JavaDocTextElement node ) { return true ; }
710729 @ Override public boolean visit (LabeledStatement node ) { return process (node ); }
711730 @ Override public boolean visit (LambdaExpression node ) { return process (node ); }
712731 @ Override public boolean visit (LineComment node ) { return true ; }
@@ -738,6 +757,7 @@ public ASTVisitor getVisitor() {
738757 @ Override public boolean visit (QualifiedType node ) { return true ; }
739758 @ Override public boolean visit (RequiresDirective node ) { return true ; }
740759 @ Override public boolean visit (RecordDeclaration node ) { return process (node ); }
760+ @ Override public boolean visit (RecordPattern node ) { return true ; }
741761 @ Override public boolean visit (ReturnStatement node ) { return true ; }
742762 @ Override public boolean visit (SimpleName node ) { return process (node ); }
743763 @ Override public boolean visit (SimpleType node ) { return true ; }
@@ -753,6 +773,7 @@ public ASTVisitor getVisitor() {
753773 @ Override public boolean visit (SwitchStatement node ) { return true ; }
754774 @ Override public boolean visit (SynchronizedStatement node ) { return true ; }
755775 @ Override public boolean visit (TagElement node ) { return true ; }
776+ @ Override public boolean visit (TagProperty node ) { return true ; }
756777 @ Override public boolean visit (TextBlock node ) { return true ; }
757778 @ Override public boolean visit (TextElement node ) { return true ; }
758779 @ Override public boolean visit (ThisExpression node ) { return true ; }
0 commit comments