From d78c3425a1d64db70d3bcf2bcc48f54e9c0edd5e Mon Sep 17 00:00:00 2001 From: Liam Miller-Cushon Date: Wed, 5 Nov 2025 13:36:23 +0100 Subject: [PATCH] Chain completers --- .../com/sun/tools/javac/jvm/ClassReader.java | 28 ++++--------------- 1 file changed, 5 insertions(+), 23 deletions(-) diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassReader.java b/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassReader.java index 2a0b2a8d558..5d6b5b2cd8f 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassReader.java +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassReader.java @@ -2310,35 +2310,17 @@ public class ClassReader { currentClassFile = classFile; List newList = deproxyTypeCompoundList(proxies); sym.setTypeAttributes(newList.prependList(sym.getRawTypeAttributes())); - if (sym.completer != Completer.NULL_COMPLETER) { - Assert.check(sym.completer instanceof TypeAnnotationsSymbolCompleter); - TypeAnnotationsSymbolCompleter completer = (TypeAnnotationsSymbolCompleter) sym.completer; - completer.attributes = newList.prependList(completer.attributes); - } else { - sym.completer = new TypeAnnotationsSymbolCompleter(newList); - } + Completer previousCompleter = sym.completer; + sym.completer = sym -> { + addTypeAnnotationsToSymbol(sym, newList); + previousCompleter.complete(sym); + }; } finally { currentClassFile = previousClassFile; } } } - private class TypeAnnotationsSymbolCompleter implements Completer { - - List attributes; - - private TypeAnnotationsSymbolCompleter(List attributes) { - this.attributes = attributes; - } - - @Override - public void complete(Symbol sym) throws CompletionFailure { - Assert.checkNonNull(attributes); - addTypeAnnotationsToSymbol(sym, attributes); - attributes = null; - } - } - /** * Rewrites types in the given symbol to include type annotations. *