From 5f0575c0512fda4c21f07b9d7b76243d9c66baea Mon Sep 17 00:00:00 2001 From: Jan Lahoda Date: Thu, 26 Mar 2026 09:58:40 +0100 Subject: [PATCH 1/7] Adjusting to JDK 27. --- .../nbproject/project.properties | 2 +- .../java/completion/JavaCompletionTask.java | 2 +- .../java/hints/errors/AddDefaultCase.java | 4 +- .../ConvertInvalidVarToExplicitArrayType.java | 12 ++-- .../modules/java/hints/errors/Utilities.java | 15 ++++ .../java/hints/errors/VarCompDeclaration.java | 4 +- .../hints/jdk/ConvertVarToExplicitType.java | 12 +--- .../suggestions/ExpectedTypeResolver.java | 6 ++ .../java/hints/suggestions/Lambda.java | 16 +++-- ...vertInvalidVarToExplicitArrayTypeTest.java | 9 ++- .../java/hints/introduce/FlowTest.java | 2 +- .../nbproject/project.properties | 2 +- .../api/java/source/TreeUtilities.java | 2 +- .../netbeans/api/java/source/WorkingCopy.java | 16 ----- .../modules/java/source/NoJavacHelper.java | 2 +- .../java/source/builder/TreeFactory.java | 14 +++- .../parsing/TranslatePositionsVisitor.java | 30 ++++---- .../parsing/VanillaPartialReparser.java | 42 ++--------- .../java/source/pretty/VeryPretty.java | 9 +-- .../modules/java/source/save/CasualDiff.java | 4 +- .../modules/java/source/save/DiffContext.java | 22 +++++- .../modules/java/source/save/Reformatter.java | 1 - .../modules/java/source/save/Reindenter.java | 1 - .../transform/ImmutableTreeTranslator.java | 17 +++-- .../java/source/transform/TreeDuplicator.java | 10 +++ .../api/java/source/TreePathHandleTest.java | 4 +- .../api/java/source/gen/LambdaTest.java | 2 +- .../lib/nbjavac/services/NBParserFactory.java | 72 ++----------------- java/libs.javacapi/external/binaries-list | 4 +- .../nbproject/org-netbeans-libs-javacapi.sig | 46 +++++++----- java/libs.nbjavacapi/external/binaries-list | 4 +- .../modules/java/hints/spiimpl/Utilities.java | 22 +----- .../nbbuild/extlibs/DownloadBinaries.java | 22 +++--- 33 files changed, 193 insertions(+), 239 deletions(-) diff --git a/java/java.completion/nbproject/project.properties b/java/java.completion/nbproject/project.properties index 228a065c1e5a..b4c0d34dab9c 100644 --- a/java/java.completion/nbproject/project.properties +++ b/java/java.completion/nbproject/project.properties @@ -15,7 +15,7 @@ # specific language governing permissions and limitations # under the License. is.autoload=true -javac.release=17 +javac.release=21 javac.compilerargs=-Xlint -Xlint:-serial spec.version.base=2.18.0 #test configs diff --git a/java/java.completion/src/org/netbeans/modules/java/completion/JavaCompletionTask.java b/java/java.completion/src/org/netbeans/modules/java/completion/JavaCompletionTask.java index ab43b4c26038..f7dfca57b3b6 100644 --- a/java/java.completion/src/org/netbeans/modules/java/completion/JavaCompletionTask.java +++ b/java/java.completion/src/org/netbeans/modules/java/completion/JavaCompletionTask.java @@ -2027,7 +2027,7 @@ private void insideLambdaExpression(Env env) throws IOException { } case COMMA -> { if (let.getParameters().isEmpty() - || !env.getController().getTreeUtilities().isSynthetic(new TreePath(path, let.getParameters().get(0).getType()))) { + || (let.getParameters().get(0).getType() instanceof Tree type && type.getKind() != Kind.VAR_TYPE)) { addClassTypes(env, null); addPrimitiveTypeKeywords(env); addKeyword(env, FINAL_KEYWORD, SPACE, false); diff --git a/java/java.hints/src/org/netbeans/modules/java/hints/errors/AddDefaultCase.java b/java/java.hints/src/org/netbeans/modules/java/hints/errors/AddDefaultCase.java index 05f9111bb164..b0e32965c4ab 100644 --- a/java/java.hints/src/org/netbeans/modules/java/hints/errors/AddDefaultCase.java +++ b/java/java.hints/src/org/netbeans/modules/java/hints/errors/AddDefaultCase.java @@ -50,7 +50,9 @@ public class AddDefaultCase implements ErrorRule { private static final Set CODES = Set.of( "compiler.err.not.exhaustive", - "compiler.err.not.exhaustive.statement" + "compiler.err.not.exhaustive.details", + "compiler.err.not.exhaustive.statement", + "compiler.err.not.exhaustive.statement.details" ); private static final String THROW_ISE = "throw new IllegalStateException(\"Unexpected value: \" + %1$s);"; diff --git a/java/java.hints/src/org/netbeans/modules/java/hints/errors/ConvertInvalidVarToExplicitArrayType.java b/java/java.hints/src/org/netbeans/modules/java/hints/errors/ConvertInvalidVarToExplicitArrayType.java index 2037aab81e88..65c1ae9d2c2e 100644 --- a/java/java.hints/src/org/netbeans/modules/java/hints/errors/ConvertInvalidVarToExplicitArrayType.java +++ b/java/java.hints/src/org/netbeans/modules/java/hints/errors/ConvertInvalidVarToExplicitArrayType.java @@ -18,6 +18,7 @@ */ package org.netbeans.modules.java.hints.errors; +import com.sun.source.tree.ArrayTypeTree; import com.sun.source.tree.ExpressionTree; import com.sun.source.tree.NewArrayTree; import com.sun.source.tree.Tree; @@ -41,6 +42,7 @@ import org.netbeans.spi.java.hints.JavaFix; import org.openide.util.NbBundle.Messages; import javax.lang.model.util.Types; +import org.netbeans.api.java.source.GeneratorUtilities; /** * @@ -164,14 +166,10 @@ protected void performRewrite(TransformationContext tc) throws Exception { } arrayType = Utilities.resolveCapturedType(wc, arrayType); + ArrayTypeTree newType = make.ArrayType(make.Type(arrayType)); + VariableTree newVariable = Utilities.setVariableType(wc, oldVariableTree, newType); - VariableTree newVariableTree = make.Variable( - oldVariableTree.getModifiers(), - oldVariableTree.getName(), - make.ArrayType(make.Type(arrayType)), - oldVariableTree.getInitializer() - ); - tc.getWorkingCopy().rewrite(oldVariableTree, newVariableTree); + tc.getWorkingCopy().rewrite(oldVariableTree, newVariable); } } } diff --git a/java/java.hints/src/org/netbeans/modules/java/hints/errors/Utilities.java b/java/java.hints/src/org/netbeans/modules/java/hints/errors/Utilities.java index 9ba26120810b..b171fe9b3268 100644 --- a/java/java.hints/src/org/netbeans/modules/java/hints/errors/Utilities.java +++ b/java/java.hints/src/org/netbeans/modules/java/hints/errors/Utilities.java @@ -3407,4 +3407,19 @@ private static Name getLeftTreeName(StatementTree statement) { return ((IdentifierTree) assignTree.getVariable()).getName(); } + public static VariableTree setVariableType(WorkingCopy copy, VariableTree var, Tree newType) { + TreeMaker make = copy.getTreeMaker(); + Tree origType = var.getType(); + + if (origType != null) { + GeneratorUtilities.get(copy).copyComments(origType, newType, true); + GeneratorUtilities.get(copy).copyComments(origType, newType, false); + } + + return make.Variable(var.getModifiers(), + var.getName(), + newType, + var.getInitializer() + ); + } } diff --git a/java/java.hints/src/org/netbeans/modules/java/hints/errors/VarCompDeclaration.java b/java/java.hints/src/org/netbeans/modules/java/hints/errors/VarCompDeclaration.java index 11dd86ab9adf..80e5fcb95d48 100644 --- a/java/java.hints/src/org/netbeans/modules/java/hints/errors/VarCompDeclaration.java +++ b/java/java.hints/src/org/netbeans/modules/java/hints/errors/VarCompDeclaration.java @@ -56,7 +56,7 @@ public Set getCodes() { @Override public List run(CompilationInfo info, String diagnosticKey, int offset, TreePath treePath, Data data) { - Tree.Kind parentKind = treePath.getParentPath().getLeaf().getKind(); + Tree.Kind parentKind = treePath.getParentPath().getParentPath().getLeaf().getKind(); if (parentKind != Tree.Kind.BLOCK && parentKind != Tree.Kind.CASE) { return null; } @@ -102,7 +102,7 @@ public String toDebugString() { @Override protected void performRewrite(TransformationContext ctx) throws Exception { - TreePath statementPath = ctx.getPath(); + TreePath statementPath = ctx.getPath().getParentPath(); Tree parent = statementPath.getParentPath().getLeaf(); List statements = null; switch (parent.getKind()) { diff --git a/java/java.hints/src/org/netbeans/modules/java/hints/jdk/ConvertVarToExplicitType.java b/java/java.hints/src/org/netbeans/modules/java/hints/jdk/ConvertVarToExplicitType.java index 151b7b614900..15f341d16cca 100644 --- a/java/java.hints/src/org/netbeans/modules/java/hints/jdk/ConvertVarToExplicitType.java +++ b/java/java.hints/src/org/netbeans/modules/java/hints/jdk/ConvertVarToExplicitType.java @@ -118,17 +118,9 @@ protected void performRewrite(TransformationContext tc) throws Exception { EnhancedForLoopTree elfTree = (EnhancedForLoopTree) statementPath.getLeaf(); ExpressionTree expTree = elfTree.getExpression(); VariableTree vtt = elfTree.getVariable(); - String elfTreeVariable = elfTree.getVariable().getType().toString(); - if (expTree == null) { - return; - } + TypeMirror type = wc.getTrees().getTypeMirror(new TreePath(statementPath, vtt)); //VariableTree with null ExpressionTree as no initialization required - VariableTree newVariableTree = make.Variable( - vtt.getModifiers(), - vtt.getName(), - make.Type(elfTreeVariable), - null - ); + VariableTree newVariableTree = Utilities.setVariableType(wc, vtt, make.Type(type)); StatementTree statement = ((EnhancedForLoopTree) statementPath.getLeaf()).getStatement(); EnhancedForLoopTree newElfTree = make.EnhancedForLoop(newVariableTree, expTree, statement); wc.rewrite(elfTree, newElfTree); diff --git a/java/java.hints/src/org/netbeans/modules/java/hints/suggestions/ExpectedTypeResolver.java b/java/java.hints/src/org/netbeans/modules/java/hints/suggestions/ExpectedTypeResolver.java index b266c3944ae8..0043c39bd875 100644 --- a/java/java.hints/src/org/netbeans/modules/java/hints/suggestions/ExpectedTypeResolver.java +++ b/java/java.hints/src/org/netbeans/modules/java/hints/suggestions/ExpectedTypeResolver.java @@ -85,6 +85,7 @@ import com.sun.source.tree.UnaryTree; import com.sun.source.tree.UnionTypeTree; import com.sun.source.tree.UsesTree; +import com.sun.source.tree.VarTypeTree; import com.sun.source.tree.VariableTree; import com.sun.source.tree.WhileLoopTree; import com.sun.source.tree.WildcardTree; @@ -313,6 +314,11 @@ public List visitVariable(VariableTree node, Object p) { return null; } + @Override + public List visitVarType(VarTypeTree node, Object p) { + return null; + } + @Override public List visitDoWhileLoop(DoWhileLoopTree node, Object p) { if (theExpression == null) { diff --git a/java/java.hints/src/org/netbeans/modules/java/hints/suggestions/Lambda.java b/java/java.hints/src/org/netbeans/modules/java/hints/suggestions/Lambda.java index ce0869e1b17f..82b8b351e19e 100644 --- a/java/java.hints/src/org/netbeans/modules/java/hints/suggestions/Lambda.java +++ b/java/java.hints/src/org/netbeans/modules/java/hints/suggestions/Lambda.java @@ -651,13 +651,16 @@ protected String getText() { @Override protected void performRewrite(TransformationContext ctx) throws Exception { + WorkingCopy wc = ctx.getWorkingCopy(); + TreeMaker make = wc.getTreeMaker(); LambdaExpressionTree let = (LambdaExpressionTree) ctx.getPath().getLeaf(); for (VariableTree var : let.getParameters()) { - TreePath typePath = TreePath.getPath(ctx.getPath(), var.getType()); - if (ctx.getWorkingCopy().getTreeUtilities().isSynthetic(typePath)) { - Tree imported = ctx.getWorkingCopy().getTreeMaker().Type(ctx.getWorkingCopy().getTrees().getTypeMirror(typePath)); - ctx.getWorkingCopy().rewrite(var.getType(), imported); + if (var.getType() == null || var.getType().getKind() == Kind.VAR_TYPE) { + Tree newType = make.Type(wc.getTrees().getTypeMirror(new TreePath(ctx.getPath(), var))); + VariableTree newVariable = Utilities.setVariableType(wc, var, newType); + + wc.rewrite(var, newVariable); } } } @@ -680,7 +683,10 @@ protected void performRewrite(JavaFix.TransformationContext ctx) throws Exceptio LambdaExpressionTree let = (LambdaExpressionTree) ctx.getPath().getLeaf(); TreeMaker make = ctx.getWorkingCopy().getTreeMaker(); let.getParameters().forEach((var) -> { - ctx.getWorkingCopy().rewrite(var.getType(), make.Type("var")); // NOI18N + Tree newType = make.Type("var"); //XXX: make.VarType()! + VariableTree newVariable = Utilities.setVariableType(ctx.getWorkingCopy(), var, newType); + + ctx.getWorkingCopy().rewrite(var, newVariable); // NOI18N }); } } diff --git a/java/java.hints/test/unit/src/org/netbeans/modules/java/hints/errors/ConvertInvalidVarToExplicitArrayTypeTest.java b/java/java.hints/test/unit/src/org/netbeans/modules/java/hints/errors/ConvertInvalidVarToExplicitArrayTypeTest.java index 0563cb846820..fbfed38fe8f7 100644 --- a/java/java.hints/test/unit/src/org/netbeans/modules/java/hints/errors/ConvertInvalidVarToExplicitArrayTypeTest.java +++ b/java/java.hints/test/unit/src/org/netbeans/modules/java/hints/errors/ConvertInvalidVarToExplicitArrayTypeTest.java @@ -118,7 +118,8 @@ public void testArrayObjectElementsFix() throws Exception { performFixTest("test/Test.java", "package test; public class Test {{final/*comment1*/ var/**comment2**/ j/*comment3*/ = /*comment4*/{new java.util.ArrayList(),new java.util.ArrayList()};}}", -1, FIX_MSG, - "package test; import java.util.ArrayList; public class Test {{final/*comment1*/ ArrayList[]/**comment2**/ j/*comment3*/ = /*comment4*/{new java.util.ArrayList(),new java.util.ArrayList()};}}"); + //TODO: the space between ArrayList[] and /**comment2**/ + "package test; import java.util.ArrayList; public class Test {{final/*comment1*/ ArrayList[] /**comment2**/ j/*comment3*/ = /*comment4*/{new java.util.ArrayList(),new java.util.ArrayList()};}}"); } public void testArrayPrimitiveNumericElementsFix() throws Exception { @@ -198,7 +199,8 @@ public void testArrayObject7ElementsFix() throws Exception { "package test; public class Test {{var/*comment1*/ a = {2,3.1f};}}", -1, FIX_MSG, - "package test; public class Test {{float[]/*comment1*/ a = {2,3.1f};}}"); + //TODO: the space between float[] and /*comment1*/ + "package test; public class Test {{float[] /*comment1*/ a = {2,3.1f};}}"); } public void testArrayObject8ElementsFix() throws Exception { @@ -213,7 +215,8 @@ public void testArrayObject9ElementsFix() throws Exception { performFixTest("test/Test.java", "package test; public class Test {{var/*comment1*/ k = {1,'c'};}}", -1, FIX_MSG, - "package test; public class Test {{int[]/*comment1*/ k = {1,'c'};}}"); + //TODO: the space between int[] and /*comment1*/ + "package test; public class Test {{int[] /*comment1*/ k = {1,'c'};}}"); } @Override diff --git a/java/java.hints/test/unit/src/org/netbeans/modules/java/hints/introduce/FlowTest.java b/java/java.hints/test/unit/src/org/netbeans/modules/java/hints/introduce/FlowTest.java index 50535c79b6b0..6d23d4079e3c 100644 --- a/java/java.hints/test/unit/src/org/netbeans/modules/java/hints/introduce/FlowTest.java +++ b/java/java.hints/test/unit/src/org/netbeans/modules/java/hints/introduce/FlowTest.java @@ -1621,7 +1621,7 @@ interface I { } } """, - "int ii"); + "/*missing*/ ii"); } public void testCatchParameters() throws Exception { diff --git a/java/java.source.base/nbproject/project.properties b/java/java.source.base/nbproject/project.properties index 923ec707672b..fb30a696ac6d 100644 --- a/java/java.source.base/nbproject/project.properties +++ b/java/java.source.base/nbproject/project.properties @@ -18,7 +18,7 @@ #javac.compilerargs=-Xlint:unchecked nbroot=../.. is.autoload=true -javac.release=17 +javac.release=21 javadoc.name=Java Source Base javadoc.title=Java Source Base javadoc.arch=${basedir}/arch.xml diff --git a/java/java.source.base/src/org/netbeans/api/java/source/TreeUtilities.java b/java/java.source.base/src/org/netbeans/api/java/source/TreeUtilities.java index ed3fe7a274ed..fa5aee317edf 100644 --- a/java/java.source.base/src/org/netbeans/api/java/source/TreeUtilities.java +++ b/java/java.source.base/src/org/netbeans/api/java/source/TreeUtilities.java @@ -784,7 +784,7 @@ private static T doParse(JavacTaskImpl task, String text, Sourc try { CharBuffer buf = CharBuffer.wrap((text+"\u0000").toCharArray(), 0, text.length()); ParserFactory factory = ParserFactory.instance(context); - Parser parser = factory.newParser(buf, false, true, false, false); + Parser parser = factory.newParser(buf, false, true, false); if (parser instanceof JavacParser javacParser) { if (sourcePositions != null) sourcePositions[0] = new ParserSourcePositions(javacParser, offset); diff --git a/java/java.source.base/src/org/netbeans/api/java/source/WorkingCopy.java b/java/java.source.base/src/org/netbeans/api/java/source/WorkingCopy.java index 5faa20961473..867a289a601e 100644 --- a/java/java.source.base/src/org/netbeans/api/java/source/WorkingCopy.java +++ b/java/java.source.base/src/org/netbeans/api/java/source/WorkingCopy.java @@ -509,22 +509,6 @@ private void addSyntheticTrees(DiffContext diffContext, Tree node) { } } } - if (node.getKind() == Kind.VARIABLE) { - JCVariableDecl var = (JCVariableDecl) node; - - if (var.declaredUsingVar()) { - diffContext.syntheticTrees.add(var.vartype); - } - } - if (node.getKind() == Kind.LAMBDA_EXPRESSION) { - JCLambda lambda = (JCLambda) node; - - if (lambda.paramKind == JCLambda.ParameterKind.IMPLICIT) { - for (JCVariableDecl param : lambda.params) { - diffContext.syntheticTrees.add(param.vartype); - } - } - } } /** diff --git a/java/java.source.base/src/org/netbeans/modules/java/source/NoJavacHelper.java b/java/java.source.base/src/org/netbeans/modules/java/source/NoJavacHelper.java index 4ed8c4b5fcc3..06031176e470 100644 --- a/java/java.source.base/src/org/netbeans/modules/java/source/NoJavacHelper.java +++ b/java/java.source.base/src/org/netbeans/modules/java/source/NoJavacHelper.java @@ -26,7 +26,7 @@ */ public class NoJavacHelper { - public static final int REQUIRED_JAVAC_VERSION = 26; // <- TODO: increment on every release + public static final int REQUIRED_JAVAC_VERSION = 27; // <- TODO: increment on every release private static final boolean HAS_WORKING_JAVAC; static { diff --git a/java/java.source.base/src/org/netbeans/modules/java/source/builder/TreeFactory.java b/java/java.source.base/src/org/netbeans/modules/java/source/builder/TreeFactory.java index f4df92838029..991512dc9d15 100644 --- a/java/java.source.base/src/org/netbeans/modules/java/source/builder/TreeFactory.java +++ b/java/java.source.base/src/org/netbeans/modules/java/source/builder/TreeFactory.java @@ -69,6 +69,7 @@ import com.sun.tools.javac.tree.JCTree; import com.sun.tools.javac.tree.JCTree.*; import com.sun.tools.javac.tree.JCTree.JCCaseLabel; +import com.sun.tools.javac.tree.JCTree.JCVariableDecl.DeclKind; import com.sun.tools.javac.util.DiagnosticSource; import com.sun.tools.javac.util.ListBuffer; import com.sun.tools.javac.util.Name; @@ -419,7 +420,11 @@ public DoWhileLoopTree DoWhileLoop(ExpressionTree condition, StatementTree state public EmptyStatementTree EmptyStatement() { return make.at(NOPOS).Skip(); } - + + public VarTypeTree VarType() { + return make.at(NOPOS).VarType(); + } + public EnhancedForLoopTree EnhancedForLoop(VariableTree variable, ExpressionTree expression, StatementTree statement) { @@ -941,8 +946,13 @@ public VariableTree Variable(ModifiersTree modifiers, CharSequence name, Tree type, ExpressionTree initializer) { + DeclKind kind = switch (type) { + case null -> DeclKind.IMPLICIT; + case VarTypeTree vtt -> DeclKind.VAR; + default -> DeclKind.EXPLICIT; + }; return make.at(NOPOS).VarDef((JCModifiers)modifiers, names.fromString(name.toString()), - (JCExpression)type, (JCExpression)initializer); + (JCExpression)type, (JCExpression)initializer, kind); } public VariableTree RecordComponent(ModifiersTree modifiers, diff --git a/java/java.source.base/src/org/netbeans/modules/java/source/parsing/TranslatePositionsVisitor.java b/java/java.source.base/src/org/netbeans/modules/java/source/parsing/TranslatePositionsVisitor.java index a81da5f28f6d..f454299a6e1a 100644 --- a/java/java.source.base/src/org/netbeans/modules/java/source/parsing/TranslatePositionsVisitor.java +++ b/java/java.source.base/src/org/netbeans/modules/java/source/parsing/TranslatePositionsVisitor.java @@ -24,9 +24,9 @@ import com.sun.source.tree.Tree; import com.sun.source.tree.VariableTree; import org.netbeans.api.java.source.support.ErrorAwareTreeScanner; -import com.sun.tools.javac.tree.EndPosTable; import com.sun.tools.javac.tree.JCTree; import com.sun.tools.javac.tree.JCTree.JCVariableDecl; +import com.sun.tools.javac.util.Position; /** * Helper visitor for partial reparse. @@ -36,16 +36,13 @@ class TranslatePositionsVisitor extends ErrorAwareTreeScanner { private final MethodTree changedMethod; - private final EndPosTable endPos; private final int delta; boolean active; boolean inMethod; - public TranslatePositionsVisitor (final MethodTree changedMethod, final EndPosTable endPos, final int delta) { + public TranslatePositionsVisitor (final MethodTree changedMethod, final int delta) { // assert changedMethod != null; - assert endPos != null; this.changedMethod = changedMethod; - this.endPos = endPos; this.delta = delta; active = changedMethod == null;//hack @@ -60,21 +57,20 @@ public Void scan(Tree node, Void p) { } } Void result = super.scan(node, p); + JCTree jcNode = (JCTree) node; if (inMethod && node != null) { - endPos.replaceTree((JCTree) node, null);//remove + jcNode.endpos = Position.NOPOS; } if (active && node != null) { - Integer pos = endPos.replaceTree((JCTree) node, null);//remove - if (pos != null) { - int newPos; - if (pos < 0) { - newPos = pos; - } - else { - newPos = pos+delta; - } - endPos.storeEnd((JCTree)node,newPos); - } + int pos = jcNode.endpos; + int newPos; + if (pos < 0) { + newPos = pos; + } + else { + newPos = pos+delta; + } + jcNode.endpos = newPos; } return result; } diff --git a/java/java.source.base/src/org/netbeans/modules/java/source/parsing/VanillaPartialReparser.java b/java/java.source.base/src/org/netbeans/modules/java/source/parsing/VanillaPartialReparser.java index ce3e41b9c0ef..9b43eed15d80 100644 --- a/java/java.source.base/src/org/netbeans/modules/java/source/parsing/VanillaPartialReparser.java +++ b/java/java.source.base/src/org/netbeans/modules/java/source/parsing/VanillaPartialReparser.java @@ -41,7 +41,6 @@ import com.sun.tools.javac.parser.LazyDocCommentTable; import com.sun.tools.javac.parser.Scanner; import com.sun.tools.javac.parser.ScannerFactory; -import com.sun.tools.javac.tree.EndPosTable; import com.sun.tools.javac.tree.JCTree; import com.sun.tools.javac.tree.TreeInfo; import com.sun.tools.javac.tree.TreeMaker; @@ -220,7 +219,6 @@ public boolean reparseMethod (final CompilationInfoImpl ci, long start = System.currentTimeMillis(); Map docComments = new HashMap<>(); block = reparseMethodBody(ctx, cu, orig, newBody + " ", docComments); - final EndPosTable endPos = ((JCTree.JCCompilationUnit)cu).endPositions; LOGGER.log(Level.FINER, "Reparsed method in: {0}", fo); //NOI18N if (block == null) { LOGGER.log( @@ -250,7 +248,7 @@ public boolean reparseMethod (final CompilationInfoImpl ci, JavacParser.logTime (fo,Phase.PARSED,(end-start)); } final int delta = newEndPos - origEndPos; - final TranslatePositionsVisitor tpv = new TranslatePositionsVisitor(orig, endPos, delta); + final TranslatePositionsVisitor tpv = new TranslatePositionsVisitor(orig, delta); tpv.scan(cu, null); Enter.instance(ctx).unenter((JCTree.JCCompilationUnit) cu, ((JCTree.JCMethodDecl)orig).body); ((JCTree.JCMethodDecl)orig).body = block; @@ -326,7 +324,7 @@ public JCTree.JCBlock reparseMethodBody(Context ctx, CompilationUnitTree topLeve } body[startPos + newBodyText.length()] = '\u0000'; CharBuffer buf = CharBuffer.wrap(body, 0, body.length - 1); - com.sun.tools.javac.parser.JavacParser parser = newParser(ctx, buf, ((JCTree.JCBlock)methodToReparse.getBody()).pos, ((JCTree.JCCompilationUnit)topLevel).endPositions); + com.sun.tools.javac.parser.JavacParser parser = newParser(ctx, buf, ((JCTree.JCBlock)methodToReparse.getBody()).pos); final JCTree.JCStatement statement = parser.parseStatement(); if (statement.getKind() == Tree.Kind.BLOCK) { if (docComments != null) { @@ -337,42 +335,16 @@ public JCTree.JCBlock reparseMethodBody(Context ctx, CompilationUnitTree topLeve return null; } - private com.sun.tools.javac.parser.JavacParser newParser(Context context, CharSequence input, int startPos, final EndPosTable endPos) { + private com.sun.tools.javac.parser.JavacParser newParser(Context context, CharSequence input, int startPos) { NBParserFactory parserFactory = (NBParserFactory) NBParserFactory.instance(context); //TODO: eliminate the cast ScannerFactory scannerFactory = ScannerFactory.instance(context); CancelService cancelService = CancelService.instance(context); Scanner lexer = scannerFactory.newScanner(input, true); // lexer.seek(startPos); - if (endPos instanceof NBParserFactory.NBJavacParser.EndPosTableImpl table) { - table.resetErrorEndPos(); - } - return new NBParserFactory.NBJavacParser(parserFactory, lexer, true, false, true, false, cancelService) { - @Override protected com.sun.tools.javac.parser.JavacParser.AbstractEndPosTable newEndPosTable(boolean keepEndPositions) { - return new com.sun.tools.javac.parser.JavacParser.AbstractEndPosTable() { - - @Override - public T storeEnd(T tree, int endpos) { - return ((NBParserFactory.NBJavacParser.EndPosTableImpl)endPos).storeEnd(tree, endpos); - } - - @Override - public int getEndPos(JCTree tree) { - return endPos.getEndPos(tree); - } - - @Override - public int replaceTree(JCTree oldtree, JCTree newtree) { - return endPos.replaceTree(oldtree, newtree); - } - - @Override - public void setErrorEndPos(int errPos) { - super.setErrorEndPos(errPos); - ((NBParserFactory.NBJavacParser.EndPosTableImpl)endPos).setErrorEndPos(errPos); - } - }; - } - }; +// if (endPos instanceof NBParserFactory.NBJavacParser.EndPosTableImpl table) { +// table.resetErrorEndPos(); +// } + return new NBParserFactory.NBJavacParser(parserFactory, lexer, true, false, false, cancelService); } public BlockTree reattrMethodBody(Context context, Scope scope, MethodTree methodToReparse, BlockTree block) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException { diff --git a/java/java.source.base/src/org/netbeans/modules/java/source/pretty/VeryPretty.java b/java/java.source.base/src/org/netbeans/modules/java/source/pretty/VeryPretty.java index abf9f78a4d64..62f6f881f691 100644 --- a/java/java.source.base/src/org/netbeans/modules/java/source/pretty/VeryPretty.java +++ b/java/java.source.base/src/org/netbeans/modules/java/source/pretty/VeryPretty.java @@ -317,7 +317,7 @@ private int getOldPos(JCTree oldT) { return TreeInfo.getStartPos(oldT); } public int endPos(JCTree t) { - return TreeInfo.getEndPos(t, diffContext.origUnit.endPositions); + return TreeInfo.getEndPos(t); } private java.util.List getStatements(Tree tree) { @@ -1830,7 +1830,7 @@ public void visitTypeCast(JCTypeCast tree) { needSpace(); if (diffContext.origUnit != null && TreePath.getPath(diffContext.origUnit, tree.expr) != null) { int a = TreeInfo.getStartPos(tree.expr); - int b = TreeInfo.getEndPos(tree.expr, diffContext.origUnit.endPositions); + int b = TreeInfo.getEndPos(tree.expr); print(diffContext.origText.substring(a, b)); return; } @@ -1885,6 +1885,7 @@ public void visitLiteral(JCLiteral tree) { && diffContext.origUnit != null && (start = diffContext.trees.getSourcePositions().getStartPosition(diffContext.origUnit, tree)) >= 0 //#137564 && (end = diffContext.getEndPosition(diffContext.origUnit, tree)) >= 0 + && diffContext.isPartOfCompilationUnit(diffContext.origUnit, tree) && origText != null) { print(origText.substring((int) start, (int) end)); return ; @@ -1893,6 +1894,7 @@ public void visitLiteral(JCLiteral tree) { && diffContext.mainUnit != null && (start = diffContext.trees.getSourcePositions().getStartPosition(diffContext.mainUnit, tree)) >= 0 //#137564 && (end = diffContext.getEndPosition(diffContext.mainUnit, tree)) >= 0 + && diffContext.isPartOfCompilationUnit(diffContext.mainUnit, tree) && diffContext.mainCode != null) { print(diffContext.mainCode.substring((int) start, (int) end)); return ; @@ -2788,7 +2790,6 @@ private void adjustSpans(Iterable original, String code) { ClasspathInfo cpInfo = ClasspathInfo.create(JavaPlatformManager.getDefault().getDefaultPlatform().getBootstrapLibraries(), empty, empty); JavacTaskImpl javacTask = JavacParser.createJavacTask(cpInfo, null, null, null, null, null, null, null, Arrays.asList(FileObjects.memoryFileObject("", "Scratch.java", code))); com.sun.tools.javac.util.Context ctx = javacTask.getContext(); - JavaCompiler.instance(ctx).genEndPos = true; CompilationUnitTree tree = javacTask.parse().iterator().next(); //NOI18N SourcePositions sp = JavacTrees.instance(ctx).getSourcePositions(); ClassTree clazz = (ClassTree) tree.getTypeDecls().get(0); @@ -3075,7 +3076,7 @@ private void printStat(JCTree tree, boolean member, boolean first, boolean col, } private void printIndentedStat(JCTree tree, BracesGenerationStyle redundantBraces, boolean spaceBeforeLeftBrace, WrapStyle wrapStat) { - if (fromOffset >= 0 && toOffset >= 0 && (TreeInfo.getStartPos(tree) < fromOffset || TreeInfo.getEndPos(tree, diffContext.origUnit.endPositions) > toOffset)) + if (fromOffset >= 0 && toOffset >= 0 && (TreeInfo.getStartPos(tree) < fromOffset || TreeInfo.getEndPos(tree) > toOffset)) redundantBraces = BracesGenerationStyle.LEAVE_ALONE; switch(redundantBraces) { case GENERATE: diff --git a/java/java.source.base/src/org/netbeans/modules/java/source/save/CasualDiff.java b/java/java.source.base/src/org/netbeans/modules/java/source/save/CasualDiff.java index 2126b3f5be75..a6a9a0f78a44 100644 --- a/java/java.source.base/src/org/netbeans/modules/java/source/save/CasualDiff.java +++ b/java/java.source.base/src/org/netbeans/modules/java/source/save/CasualDiff.java @@ -544,14 +544,14 @@ public int endPos(JCTree t) { if (t instanceof FieldGroupTree) { FieldGroupTree fgt = (FieldGroupTree)t; VariableTree vt = fgt.getVariables().get(fgt.getVariables().size() - 1); - return TreeInfo.getEndPos((JCTree)vt, oldTopLevel.endPositions); + return TreeInfo.getEndPos((JCTree)vt); } int endPos = diffContext.getEndPosition(oldTopLevel, t); if (endPos == Position.NOPOS) { if (t instanceof JCAssign) { // [NETBEANS-4299], might be a synthetic annotation attribute, try rhs - endPos = TreeInfo.getEndPos(((JCAssign)t).rhs, oldTopLevel.endPositions); + endPos = TreeInfo.getEndPos(((JCAssign)t).rhs); } else { endPos = getOldPos(t); } diff --git a/java/java.source.base/src/org/netbeans/modules/java/source/save/DiffContext.java b/java/java.source.base/src/org/netbeans/modules/java/source/save/DiffContext.java index 36b2ad673b7c..db578a633dcb 100644 --- a/java/java.source.base/src/org/netbeans/modules/java/source/save/DiffContext.java +++ b/java/java.source.base/src/org/netbeans/modules/java/source/save/DiffContext.java @@ -21,6 +21,7 @@ import com.sun.source.tree.CompilationUnitTree; import com.sun.source.tree.Tree; +import com.sun.source.util.TreePathScanner; import com.sun.source.util.Trees; import com.sun.tools.javac.tree.JCTree; import com.sun.tools.javac.tree.JCTree.JCCompilationUnit; @@ -59,6 +60,7 @@ public class DiffContext { public final PositionConverter positionConverter; public final FileObject file; public final Set syntheticTrees; + public final Map> cut2ContainedTrees = new HashMap<>(); public final JCCompilationUnit mainUnit; public final String mainCode; @@ -141,7 +143,7 @@ public static final CodeStyle getCodeStyle(CompilationInfo info) { } public int getEndPosition(JCCompilationUnit unit, JCTree t) { - int endPos = TreeInfo.getEndPos(t, unit.endPositions); + int endPos = TreeInfo.getEndPos(t); if (endPos == Position.NOPOS && unit == origUnit) { endPos = syntheticEndPositions.getOrDefault(t, Position.NOPOS); @@ -149,4 +151,22 @@ public int getEndPosition(JCCompilationUnit unit, JCTree t) { return endPos; } + + public boolean isPartOfCompilationUnit(CompilationUnitTree cut, Tree tree2Test) { + return cut2ContainedTrees.computeIfAbsent(cut, c -> { + Set containedTree = new HashSet<>(); + + new TreePathScanner<>() { + @Override + public Object scan(Tree tree, Object p) { + if (tree != null) { + containedTree.add(tree); + } + return super.scan(tree, p); + } + }.scan(c, null); + + return containedTree; + }).contains(tree2Test); + } } diff --git a/java/java.source.base/src/org/netbeans/modules/java/source/save/Reformatter.java b/java/java.source.base/src/org/netbeans/modules/java/source/save/Reformatter.java index 0070d2581374..b0e2ae74316d 100644 --- a/java/java.source.base/src/org/netbeans/modules/java/source/save/Reformatter.java +++ b/java/java.source.base/src/org/netbeans/modules/java/source/save/Reformatter.java @@ -113,7 +113,6 @@ public static String reformat(String text, CodeStyle style, int rightMargin) { ClasspathInfo cpInfo = ClasspathInfo.create(JavaPlatformManager.getDefault().getDefaultPlatform().getBootstrapLibraries(), empty, empty); JavacTaskImpl javacTask = JavacParser.createJavacTask(cpInfo, null, null, null, null, null, null, null, Arrays.asList(FileObjects.memoryFileObject("","Scratch.java", text))); com.sun.tools.javac.util.Context ctx = javacTask.getContext(); - JavaCompiler.instance(ctx).genEndPos = true; CompilationUnitTree tree = javacTask.parse().iterator().next(); //NOI18N SourcePositions sp = JavacTrees.instance(ctx).getSourcePositions(); TokenSequence tokens = TokenHierarchy.create(text, JavaTokenId.language()).tokenSequence(JavaTokenId.language()); diff --git a/java/java.source.base/src/org/netbeans/modules/java/source/save/Reindenter.java b/java/java.source.base/src/org/netbeans/modules/java/source/save/Reindenter.java index a94ed9c40406..1a4a2da41378 100644 --- a/java/java.source.base/src/org/netbeans/modules/java/source/save/Reindenter.java +++ b/java/java.source.base/src/org/netbeans/modules/java/source/save/Reindenter.java @@ -263,7 +263,6 @@ private boolean initRegionData(final Region region) { public void report(Diagnostic diagnostic) { } }, Collections.singletonList("-proc:none"), null, Collections.emptySet(), ctx); //NOI18N - JavaCompiler.instance(ctx).genEndPos = true; text = context.document().getText(currentEmbeddingStartOffset, currentEmbeddingLength); if (JavacParser.MIME_TYPE.equals(context.mimePath())) { FileObject fo = Utilities.getFileObject(context.document()); diff --git a/java/java.source.base/src/org/netbeans/modules/java/source/transform/ImmutableTreeTranslator.java b/java/java.source.base/src/org/netbeans/modules/java/source/transform/ImmutableTreeTranslator.java index d2fd9688387f..1574bcd6fedb 100644 --- a/java/java.source.base/src/org/netbeans/modules/java/source/transform/ImmutableTreeTranslator.java +++ b/java/java.source.base/src/org/netbeans/modules/java/source/transform/ImmutableTreeTranslator.java @@ -370,7 +370,12 @@ public Tree visitVariable(VariableTree tree, Object p) { currentSym = oldSym; return result; } - + + @Override + public Tree visitVarType(VarTypeTree tree, Object p) { + return rewriteChildren(tree); + } + @Override public Tree visitEmptyStatement(EmptyStatementTree tree, Object p) { return rewriteChildren(tree); @@ -749,7 +754,7 @@ protected final MethodTree rewriteChildren(MethodTree tree) { } return tree; } - + protected final VariableTree rewriteChildren(VariableTree tree) { ModifiersTree mods = (ModifiersTree)translate(tree.getModifiers()); ExpressionTree vartype = (ExpressionTree)translateClassRef(tree.getType()); @@ -763,6 +768,10 @@ protected final VariableTree rewriteChildren(VariableTree tree) { return tree; } + protected final VarTypeTree rewriteChildren(VarTypeTree tree) { + return tree; + } + protected final EmptyStatementTree rewriteChildren(EmptyStatementTree tree) { return tree; } @@ -888,10 +897,6 @@ protected final LambdaExpressionTree rewriteChildren(LambdaExpressionTree tree) parameters != tree.getParameters()) { LambdaExpressionTree n = make.LambdaExpression(parameters, body); - // issue #239256, NETBEANS-345 - // Subsequent to the construction of tree, the vartype of the head - // param might have been filled in, so we need to copy tree's paramKind. - ((JCLambda)n).paramKind = ((JCLambda)tree).paramKind; model.setType(n, model.getType(tree)); copyCommentTo(tree,n); copyPosTo(tree,n); diff --git a/java/java.source.base/src/org/netbeans/modules/java/source/transform/TreeDuplicator.java b/java/java.source.base/src/org/netbeans/modules/java/source/transform/TreeDuplicator.java index d516505f6d70..b2dd97634c67 100644 --- a/java/java.source.base/src/org/netbeans/modules/java/source/transform/TreeDuplicator.java +++ b/java/java.source.base/src/org/netbeans/modules/java/source/transform/TreeDuplicator.java @@ -84,6 +84,7 @@ import com.sun.source.tree.UnaryTree; import com.sun.source.tree.UnionTypeTree; import com.sun.source.tree.UsesTree; +import com.sun.source.tree.VarTypeTree; import com.sun.source.tree.VariableTree; import com.sun.source.tree.WhileLoopTree; import com.sun.source.tree.WildcardTree; @@ -583,6 +584,15 @@ public Tree visitVariable(VariableTree tree, Void p) { return n; } + @Override + public Tree visitVarType(VarTypeTree tree, Void p) { + EmptyStatementTree n = make.EmptyStatement(); +// model.setType(n, model.getType(tree)); + comments.copyComments(tree, n); + model.setPos(n, model.getPos(tree)); + return n; + } + @Override public Tree visitWhileLoop(WhileLoopTree tree, Void p) { WhileLoopTree n = make.WhileLoop(tree.getCondition(), tree.getStatement()); diff --git a/java/java.source.base/test/unit/src/org/netbeans/api/java/source/TreePathHandleTest.java b/java/java.source.base/test/unit/src/org/netbeans/api/java/source/TreePathHandleTest.java index 6d762690fcdc..83b09ae38a59 100644 --- a/java/java.source.base/test/unit/src/org/netbeans/api/java/source/TreePathHandleTest.java +++ b/java/java.source.base/test/unit/src/org/netbeans/api/java/source/TreePathHandleTest.java @@ -453,13 +453,13 @@ public void testVarInstanceMember() throws Exception { CompilationInfo info = SourceUtilsTestUtil.getCompilationInfo(js, Phase.RESOLVED); assertTrue(info.getDiagnostics().size() > 0); - TreePath tp = info.getTreeUtilities().pathFor(code.indexOf("var v1") + 1); //NOI18N + TreePath tp = info.getTreeUtilities().pathFor(code.indexOf("var v1") + 5); //NOI18N VariableElement elem = (VariableElement) info.getTrees().getElement(tp); ClassFileUtil.createFieldDescriptor(elem); TreePathHandle handle = TreePathHandle.create(tp, info); assertNotNull(handle.getElementHandle()); - tp = info.getTreeUtilities().pathFor(code.indexOf("var v2") + 1); //NOI18N + tp = info.getTreeUtilities().pathFor(code.indexOf("var v2") + 5); //NOI18N elem = (VariableElement) info.getTrees().getElement(tp); ClassFileUtil.createFieldDescriptor(elem); diff --git a/java/java.source.base/test/unit/src/org/netbeans/api/java/source/gen/LambdaTest.java b/java/java.source.base/test/unit/src/org/netbeans/api/java/source/gen/LambdaTest.java index 03899bdb79b9..24050a722854 100644 --- a/java/java.source.base/test/unit/src/org/netbeans/api/java/source/gen/LambdaTest.java +++ b/java/java.source.base/test/unit/src/org/netbeans/api/java/source/gen/LambdaTest.java @@ -833,7 +833,7 @@ public void run(final WorkingCopy workingCopy) throws IOException { new ErrorAwareTreeScanner() { @Override public Void visitLambdaExpression(LambdaExpressionTree node, Void p) { for (VariableTree par : node.getParameters()) { - workingCopy.rewrite(par.getType(), make.Identifier("String")); + workingCopy.rewrite(par, make.Variable(par.getModifiers(), par.getName(), make.Identifier("String"), par.getInitializer())); } return super.visitLambdaExpression(node, p); } diff --git a/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBParserFactory.java b/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBParserFactory.java index 5454ffb26ea1..426cab8b9ac0 100644 --- a/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBParserFactory.java +++ b/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBParserFactory.java @@ -70,9 +70,9 @@ protected NBParserFactory(Context context) { } @Override - public JavacParser newParser(CharSequence input, boolean keepDocComments, boolean keepEndPos, boolean keepLineMap, boolean parseModuleInfo) { + public JavacParser newParser(CharSequence input, boolean keepDocComments, boolean keepLineMap, boolean parseModuleInfo) { Lexer lexer = scannerFactory.newScanner(input, keepDocComments); - return new NBJavacParser(this, lexer, keepDocComments, keepLineMap, keepEndPos, parseModuleInfo, cancelService); + return new NBJavacParser(this, lexer, keepDocComments, keepLineMap, parseModuleInfo, cancelService); } public static class NBJavacParser extends JavacParser { @@ -80,8 +80,8 @@ public static class NBJavacParser extends JavacParser { private final NBTreeMaker make; private final CancelService cancelService; - public NBJavacParser(NBParserFactory fac, Lexer S, boolean keepDocComments, boolean keepLineMap, boolean keepEndPos, boolean parseModuleInfo, CancelService cancelService) { - super(fac, S, keepDocComments, keepLineMap, keepEndPos, parseModuleInfo); + public NBJavacParser(NBParserFactory fac, Lexer S, boolean keepDocComments, boolean keepLineMap, boolean parseModuleInfo, CancelService cancelService) { + super(fac, S, keepDocComments, keepLineMap, parseModuleInfo); this.make = fac.make; this.cancelService = cancelService; } @@ -120,17 +120,6 @@ public JCCompilationUnit parseCompilationUnit() { return unit; } - @Override - protected AbstractEndPosTable newEndPosTable(boolean keepEndPositions) { - AbstractEndPosTable res = super.newEndPosTable(keepEndPositions); - - if (keepEndPositions) { - return new EndPosTableImpl(S, this, (SimpleEndPosTable) res); - } - - return res; - } - @Override protected JCClassDecl classDeclaration(JCModifiers mods, Comment dc) { if (cancelService != null) { @@ -166,7 +155,7 @@ protected JCTree methodDeclaratorRest(int pos, JCModifiers mods, JCExpression ty @Override public int getEndPos(JCTree jctree) { - return TreeInfo.getEndPos(jctree, endPosTable); + return TreeInfo.getEndPos(jctree); } @Override @@ -179,60 +168,11 @@ public JCStatement parseSimpleStatement() { if (result instanceof JCEnhancedForLoop) { JCEnhancedForLoop tree = (JCEnhancedForLoop) result; if (getEndPos(tree.var) == Position.NOPOS) { - ((EndPosTableImpl) endPosTable).setEnd(tree.var, getEndPos(tree.var.vartype)); + tree.var.endpos = getEndPos(tree.var.vartype); } } return result; } - - public final class EndPosTableImpl extends AbstractEndPosTable { - - private final SimpleEndPosTable delegate; - - private EndPosTableImpl(Lexer lexer, JavacParser parser, SimpleEndPosTable delegate) { - this.delegate = delegate; - } - - public void resetErrorEndPos() { - delegate.errorEndPos = Position.NOPOS; - errorEndPos = delegate.errorEndPos; - } - - @Override - public T storeEnd(T tree, int endpos) { - if (endpos >= 0) - return delegate.storeEnd(tree, endpos); - return null; - } - - public void setEnd(JCTree tree, int endpos) { - if (endpos >= 0) { - int oldErrorEndPos = delegate.errorEndPos; - try { - delegate.errorEndPos = -1; - delegate.storeEnd(tree, endpos); - } finally { - delegate.errorEndPos = oldErrorEndPos; - } - } - } - - @Override - public void setErrorEndPos(int errPos) { - delegate.setErrorEndPos(errPos); - errorEndPos = delegate.errorEndPos; - } - - @Override - public int getEndPos(JCTree jctree) { - return delegate.getEndPos(jctree); - } - - @Override - public int replaceTree(JCTree jctree, JCTree jctree1) { - return delegate.replaceTree(jctree, jctree1); - } - } } } diff --git a/java/libs.javacapi/external/binaries-list b/java/libs.javacapi/external/binaries-list index 10da1b4fc791..0d8c04c8df34 100644 --- a/java/libs.javacapi/external/binaries-list +++ b/java/libs.javacapi/external/binaries-list @@ -14,5 +14,5 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -162196CDF0DAE37B7D3AD7991DE4310B78AFA30F com.dukescript.nbjavac:nb-javac:jdk-26+27 -F9B91950111918341594B7B5641B3731CA8CCF80 com.dukescript.nbjavac:nb-javac:jdk-26+27:api \ No newline at end of file +X file:${nb_all}/nb-javac/make/langtools/netbeans/nb-javac/dist/nb-javac-jdk-27+14-api.jar nb-javac-jdk-26+27-api.jar +X file:${nb_all}/nb-javac/make/langtools/netbeans/nb-javac/dist/nb-javac-jdk-27+14-impl.jar nb-javac-jdk-26+27.jar diff --git a/java/libs.javacapi/nbproject/org-netbeans-libs-javacapi.sig b/java/libs.javacapi/nbproject/org-netbeans-libs-javacapi.sig index ff5cdde93ee1..5261c6b5ec90 100644 --- a/java/libs.javacapi/nbproject/org-netbeans-libs-javacapi.sig +++ b/java/libs.javacapi/nbproject/org-netbeans-libs-javacapi.sig @@ -1,5 +1,5 @@ #Signature file v4.1 -#Version 8.55.0 +#Version 8.56.0 CLSS public abstract interface com.sun.source.doctree.AttributeTree innr public final static !enum ValueKind @@ -786,6 +786,7 @@ fld public final static com.sun.source.tree.Tree$Kind UNSIGNED_RIGHT_SHIFT fld public final static com.sun.source.tree.Tree$Kind UNSIGNED_RIGHT_SHIFT_ASSIGNMENT fld public final static com.sun.source.tree.Tree$Kind USES fld public final static com.sun.source.tree.Tree$Kind VARIABLE +fld public final static com.sun.source.tree.Tree$Kind VAR_TYPE fld public final static com.sun.source.tree.Tree$Kind WHILE_LOOP fld public final static com.sun.source.tree.Tree$Kind XOR fld public final static com.sun.source.tree.Tree$Kind XOR_ASSIGNMENT @@ -861,6 +862,7 @@ meth public abstract {com.sun.source.tree.TreeVisitor%0} visitTypeParameter(com. meth public abstract {com.sun.source.tree.TreeVisitor%0} visitUnary(com.sun.source.tree.UnaryTree,{com.sun.source.tree.TreeVisitor%1}) meth public abstract {com.sun.source.tree.TreeVisitor%0} visitUnionType(com.sun.source.tree.UnionTypeTree,{com.sun.source.tree.TreeVisitor%1}) meth public abstract {com.sun.source.tree.TreeVisitor%0} visitUses(com.sun.source.tree.UsesTree,{com.sun.source.tree.TreeVisitor%1}) +meth public abstract {com.sun.source.tree.TreeVisitor%0} visitVarType(com.sun.source.tree.VarTypeTree,{com.sun.source.tree.TreeVisitor%1}) meth public abstract {com.sun.source.tree.TreeVisitor%0} visitVariable(com.sun.source.tree.VariableTree,{com.sun.source.tree.TreeVisitor%1}) meth public abstract {com.sun.source.tree.TreeVisitor%0} visitWhileLoop(com.sun.source.tree.WhileLoopTree,{com.sun.source.tree.TreeVisitor%1}) meth public abstract {com.sun.source.tree.TreeVisitor%0} visitWildcard(com.sun.source.tree.WildcardTree,{com.sun.source.tree.TreeVisitor%1}) @@ -896,6 +898,9 @@ CLSS public abstract interface com.sun.source.tree.UsesTree intf com.sun.source.tree.DirectiveTree meth public abstract com.sun.source.tree.ExpressionTree getServiceName() +CLSS public abstract interface com.sun.source.tree.VarTypeTree +intf com.sun.source.tree.Tree + CLSS public abstract interface com.sun.source.tree.VariableTree intf com.sun.source.tree.StatementTree meth public abstract com.sun.source.tree.ExpressionTree getInitializer() @@ -1209,6 +1214,7 @@ meth public {com.sun.source.util.SimpleTreeVisitor%0} visitTypeParameter(com.sun meth public {com.sun.source.util.SimpleTreeVisitor%0} visitUnary(com.sun.source.tree.UnaryTree,{com.sun.source.util.SimpleTreeVisitor%1}) meth public {com.sun.source.util.SimpleTreeVisitor%0} visitUnionType(com.sun.source.tree.UnionTypeTree,{com.sun.source.util.SimpleTreeVisitor%1}) meth public {com.sun.source.util.SimpleTreeVisitor%0} visitUses(com.sun.source.tree.UsesTree,{com.sun.source.util.SimpleTreeVisitor%1}) +meth public {com.sun.source.util.SimpleTreeVisitor%0} visitVarType(com.sun.source.tree.VarTypeTree,{com.sun.source.util.SimpleTreeVisitor%1}) meth public {com.sun.source.util.SimpleTreeVisitor%0} visitVariable(com.sun.source.tree.VariableTree,{com.sun.source.util.SimpleTreeVisitor%1}) meth public {com.sun.source.util.SimpleTreeVisitor%0} visitWhileLoop(com.sun.source.tree.WhileLoopTree,{com.sun.source.util.SimpleTreeVisitor%1}) meth public {com.sun.source.util.SimpleTreeVisitor%0} visitWildcard(com.sun.source.tree.WildcardTree,{com.sun.source.util.SimpleTreeVisitor%1}) @@ -1341,6 +1347,7 @@ meth public {com.sun.source.util.TreeScanner%0} visitTypeParameter(com.sun.sourc meth public {com.sun.source.util.TreeScanner%0} visitUnary(com.sun.source.tree.UnaryTree,{com.sun.source.util.TreeScanner%1}) meth public {com.sun.source.util.TreeScanner%0} visitUnionType(com.sun.source.tree.UnionTypeTree,{com.sun.source.util.TreeScanner%1}) meth public {com.sun.source.util.TreeScanner%0} visitUses(com.sun.source.tree.UsesTree,{com.sun.source.util.TreeScanner%1}) +meth public {com.sun.source.util.TreeScanner%0} visitVarType(com.sun.source.tree.VarTypeTree,{com.sun.source.util.TreeScanner%1}) meth public {com.sun.source.util.TreeScanner%0} visitVariable(com.sun.source.tree.VariableTree,{com.sun.source.util.TreeScanner%1}) meth public {com.sun.source.util.TreeScanner%0} visitWhileLoop(com.sun.source.tree.WhileLoopTree,{com.sun.source.util.TreeScanner%1}) meth public {com.sun.source.util.TreeScanner%0} visitWildcard(com.sun.source.tree.WildcardTree,{com.sun.source.util.TreeScanner%1}) @@ -1641,6 +1648,7 @@ fld public final static javax.lang.model.SourceVersion RELEASE_23 fld public final static javax.lang.model.SourceVersion RELEASE_24 fld public final static javax.lang.model.SourceVersion RELEASE_25 fld public final static javax.lang.model.SourceVersion RELEASE_26 +fld public final static javax.lang.model.SourceVersion RELEASE_27 fld public final static javax.lang.model.SourceVersion RELEASE_3 fld public final static javax.lang.model.SourceVersion RELEASE_4 fld public final static javax.lang.model.SourceVersion RELEASE_5 @@ -2086,7 +2094,7 @@ meth public abstract javax.lang.model.type.TypeMirror getExtendsBound() meth public abstract javax.lang.model.type.TypeMirror getSuperBound() CLSS public abstract javax.lang.model.util.AbstractAnnotationValueVisitor14<%0 extends java.lang.Object, %1 extends java.lang.Object> - anno 0 javax.annotation.processing.SupportedSourceVersion(javax.lang.model.SourceVersion value=RELEASE_26) + anno 0 javax.annotation.processing.SupportedSourceVersion(javax.lang.model.SourceVersion value=RELEASE_27) cons protected init() supr javax.lang.model.util.AbstractAnnotationValueVisitor9<{javax.lang.model.util.AbstractAnnotationValueVisitor14%0},{javax.lang.model.util.AbstractAnnotationValueVisitor14%1}> @@ -2117,12 +2125,12 @@ cons protected init() supr javax.lang.model.util.AbstractAnnotationValueVisitor8<{javax.lang.model.util.AbstractAnnotationValueVisitor9%0},{javax.lang.model.util.AbstractAnnotationValueVisitor9%1}> CLSS public abstract javax.lang.model.util.AbstractAnnotationValueVisitorPreview<%0 extends java.lang.Object, %1 extends java.lang.Object> - anno 0 javax.annotation.processing.SupportedSourceVersion(javax.lang.model.SourceVersion value=RELEASE_26) + anno 0 javax.annotation.processing.SupportedSourceVersion(javax.lang.model.SourceVersion value=RELEASE_27) cons protected init() supr javax.lang.model.util.AbstractAnnotationValueVisitor14<{javax.lang.model.util.AbstractAnnotationValueVisitorPreview%0},{javax.lang.model.util.AbstractAnnotationValueVisitorPreview%1}> CLSS public abstract javax.lang.model.util.AbstractElementVisitor14<%0 extends java.lang.Object, %1 extends java.lang.Object> - anno 0 javax.annotation.processing.SupportedSourceVersion(javax.lang.model.SourceVersion value=RELEASE_26) + anno 0 javax.annotation.processing.SupportedSourceVersion(javax.lang.model.SourceVersion value=RELEASE_27) cons protected init() meth public abstract {javax.lang.model.util.AbstractElementVisitor14%0} visitRecordComponent(javax.lang.model.element.RecordComponentElement,{javax.lang.model.util.AbstractElementVisitor14%1}) supr javax.lang.model.util.AbstractElementVisitor9<{javax.lang.model.util.AbstractElementVisitor14%0},{javax.lang.model.util.AbstractElementVisitor14%1}> @@ -2157,12 +2165,12 @@ meth public abstract {javax.lang.model.util.AbstractElementVisitor9%0} visitModu supr javax.lang.model.util.AbstractElementVisitor8<{javax.lang.model.util.AbstractElementVisitor9%0},{javax.lang.model.util.AbstractElementVisitor9%1}> CLSS public abstract javax.lang.model.util.AbstractElementVisitorPreview<%0 extends java.lang.Object, %1 extends java.lang.Object> - anno 0 javax.annotation.processing.SupportedSourceVersion(javax.lang.model.SourceVersion value=RELEASE_26) + anno 0 javax.annotation.processing.SupportedSourceVersion(javax.lang.model.SourceVersion value=RELEASE_27) cons protected init() supr javax.lang.model.util.AbstractElementVisitor14<{javax.lang.model.util.AbstractElementVisitorPreview%0},{javax.lang.model.util.AbstractElementVisitorPreview%1}> CLSS public abstract javax.lang.model.util.AbstractTypeVisitor14<%0 extends java.lang.Object, %1 extends java.lang.Object> - anno 0 javax.annotation.processing.SupportedSourceVersion(javax.lang.model.SourceVersion value=RELEASE_26) + anno 0 javax.annotation.processing.SupportedSourceVersion(javax.lang.model.SourceVersion value=RELEASE_27) cons protected init() supr javax.lang.model.util.AbstractTypeVisitor9<{javax.lang.model.util.AbstractTypeVisitor14%0},{javax.lang.model.util.AbstractTypeVisitor14%1}> @@ -2197,7 +2205,7 @@ cons protected init() supr javax.lang.model.util.AbstractTypeVisitor8<{javax.lang.model.util.AbstractTypeVisitor9%0},{javax.lang.model.util.AbstractTypeVisitor9%1}> CLSS public abstract javax.lang.model.util.AbstractTypeVisitorPreview<%0 extends java.lang.Object, %1 extends java.lang.Object> - anno 0 javax.annotation.processing.SupportedSourceVersion(javax.lang.model.SourceVersion value=RELEASE_26) + anno 0 javax.annotation.processing.SupportedSourceVersion(javax.lang.model.SourceVersion value=RELEASE_27) cons protected init() supr javax.lang.model.util.AbstractTypeVisitor14<{javax.lang.model.util.AbstractTypeVisitorPreview%0},{javax.lang.model.util.AbstractTypeVisitorPreview%1}> @@ -2225,7 +2233,7 @@ supr java.lang.Object hfds CONSTRUCTOR_KIND,FIELD_KINDS,METHOD_KIND,MODULE_KIND,PACKAGE_KIND,RECORD_COMPONENT_KIND,TYPE_KINDS CLSS public javax.lang.model.util.ElementKindVisitor14<%0 extends java.lang.Object, %1 extends java.lang.Object> - anno 0 javax.annotation.processing.SupportedSourceVersion(javax.lang.model.SourceVersion value=RELEASE_26) + anno 0 javax.annotation.processing.SupportedSourceVersion(javax.lang.model.SourceVersion value=RELEASE_27) cons protected init() cons protected init({javax.lang.model.util.ElementKindVisitor14%0}) meth public {javax.lang.model.util.ElementKindVisitor14%0} visitRecordComponent(javax.lang.model.element.RecordComponentElement,{javax.lang.model.util.ElementKindVisitor14%1}) @@ -2285,13 +2293,13 @@ meth public {javax.lang.model.util.ElementKindVisitor9%0} visitModule(javax.lang supr javax.lang.model.util.ElementKindVisitor8<{javax.lang.model.util.ElementKindVisitor9%0},{javax.lang.model.util.ElementKindVisitor9%1}> CLSS public javax.lang.model.util.ElementKindVisitorPreview<%0 extends java.lang.Object, %1 extends java.lang.Object> - anno 0 javax.annotation.processing.SupportedSourceVersion(javax.lang.model.SourceVersion value=RELEASE_26) + anno 0 javax.annotation.processing.SupportedSourceVersion(javax.lang.model.SourceVersion value=RELEASE_27) cons protected init() cons protected init({javax.lang.model.util.ElementKindVisitorPreview%0}) supr javax.lang.model.util.ElementKindVisitor14<{javax.lang.model.util.ElementKindVisitorPreview%0},{javax.lang.model.util.ElementKindVisitorPreview%1}> CLSS public javax.lang.model.util.ElementScanner14<%0 extends java.lang.Object, %1 extends java.lang.Object> - anno 0 javax.annotation.processing.SupportedSourceVersion(javax.lang.model.SourceVersion value=RELEASE_26) + anno 0 javax.annotation.processing.SupportedSourceVersion(javax.lang.model.SourceVersion value=RELEASE_27) cons protected init() cons protected init({javax.lang.model.util.ElementScanner14%0}) meth public {javax.lang.model.util.ElementScanner14%0} visitExecutable(javax.lang.model.element.ExecutableElement,{javax.lang.model.util.ElementScanner14%1}) @@ -2340,7 +2348,7 @@ meth public {javax.lang.model.util.ElementScanner9%0} visitModule(javax.lang.mod supr javax.lang.model.util.ElementScanner8<{javax.lang.model.util.ElementScanner9%0},{javax.lang.model.util.ElementScanner9%1}> CLSS public javax.lang.model.util.ElementScannerPreview<%0 extends java.lang.Object, %1 extends java.lang.Object> - anno 0 javax.annotation.processing.SupportedSourceVersion(javax.lang.model.SourceVersion value=RELEASE_26) + anno 0 javax.annotation.processing.SupportedSourceVersion(javax.lang.model.SourceVersion value=RELEASE_27) cons protected init() cons protected init({javax.lang.model.util.ElementScannerPreview%0}) supr javax.lang.model.util.ElementScanner14<{javax.lang.model.util.ElementScannerPreview%0},{javax.lang.model.util.ElementScannerPreview%1}> @@ -2402,7 +2410,7 @@ meth public static javax.lang.model.util.Elements$Origin[] values() supr java.lang.Enum CLSS public javax.lang.model.util.SimpleAnnotationValueVisitor14<%0 extends java.lang.Object, %1 extends java.lang.Object> - anno 0 javax.annotation.processing.SupportedSourceVersion(javax.lang.model.SourceVersion value=RELEASE_26) + anno 0 javax.annotation.processing.SupportedSourceVersion(javax.lang.model.SourceVersion value=RELEASE_27) cons protected init() cons protected init({javax.lang.model.util.SimpleAnnotationValueVisitor14%0}) supr javax.lang.model.util.SimpleAnnotationValueVisitor9<{javax.lang.model.util.SimpleAnnotationValueVisitor14%0},{javax.lang.model.util.SimpleAnnotationValueVisitor14%1}> @@ -2451,13 +2459,13 @@ cons protected init({javax.lang.model.util.SimpleAnnotationValueVisitor9%0}) supr javax.lang.model.util.SimpleAnnotationValueVisitor8<{javax.lang.model.util.SimpleAnnotationValueVisitor9%0},{javax.lang.model.util.SimpleAnnotationValueVisitor9%1}> CLSS public javax.lang.model.util.SimpleAnnotationValueVisitorPreview<%0 extends java.lang.Object, %1 extends java.lang.Object> - anno 0 javax.annotation.processing.SupportedSourceVersion(javax.lang.model.SourceVersion value=RELEASE_26) + anno 0 javax.annotation.processing.SupportedSourceVersion(javax.lang.model.SourceVersion value=RELEASE_27) cons protected init() cons protected init({javax.lang.model.util.SimpleAnnotationValueVisitorPreview%0}) supr javax.lang.model.util.SimpleAnnotationValueVisitor14<{javax.lang.model.util.SimpleAnnotationValueVisitorPreview%0},{javax.lang.model.util.SimpleAnnotationValueVisitorPreview%1}> CLSS public javax.lang.model.util.SimpleElementVisitor14<%0 extends java.lang.Object, %1 extends java.lang.Object> - anno 0 javax.annotation.processing.SupportedSourceVersion(javax.lang.model.SourceVersion value=RELEASE_26) + anno 0 javax.annotation.processing.SupportedSourceVersion(javax.lang.model.SourceVersion value=RELEASE_27) cons protected init() cons protected init({javax.lang.model.util.SimpleElementVisitor14%0}) meth public {javax.lang.model.util.SimpleElementVisitor14%0} visitRecordComponent(javax.lang.model.element.RecordComponentElement,{javax.lang.model.util.SimpleElementVisitor14%1}) @@ -2501,13 +2509,13 @@ meth public {javax.lang.model.util.SimpleElementVisitor9%0} visitModule(javax.la supr javax.lang.model.util.SimpleElementVisitor8<{javax.lang.model.util.SimpleElementVisitor9%0},{javax.lang.model.util.SimpleElementVisitor9%1}> CLSS public javax.lang.model.util.SimpleElementVisitorPreview<%0 extends java.lang.Object, %1 extends java.lang.Object> - anno 0 javax.annotation.processing.SupportedSourceVersion(javax.lang.model.SourceVersion value=RELEASE_26) + anno 0 javax.annotation.processing.SupportedSourceVersion(javax.lang.model.SourceVersion value=RELEASE_27) cons protected init() cons protected init({javax.lang.model.util.SimpleElementVisitorPreview%0}) supr javax.lang.model.util.SimpleElementVisitor14<{javax.lang.model.util.SimpleElementVisitorPreview%0},{javax.lang.model.util.SimpleElementVisitorPreview%1}> CLSS public javax.lang.model.util.SimpleTypeVisitor14<%0 extends java.lang.Object, %1 extends java.lang.Object> - anno 0 javax.annotation.processing.SupportedSourceVersion(javax.lang.model.SourceVersion value=RELEASE_26) + anno 0 javax.annotation.processing.SupportedSourceVersion(javax.lang.model.SourceVersion value=RELEASE_27) cons protected init() cons protected init({javax.lang.model.util.SimpleTypeVisitor14%0}) supr javax.lang.model.util.SimpleTypeVisitor9<{javax.lang.model.util.SimpleTypeVisitor14%0},{javax.lang.model.util.SimpleTypeVisitor14%1}> @@ -2554,13 +2562,13 @@ cons protected init({javax.lang.model.util.SimpleTypeVisitor9%0}) supr javax.lang.model.util.SimpleTypeVisitor8<{javax.lang.model.util.SimpleTypeVisitor9%0},{javax.lang.model.util.SimpleTypeVisitor9%1}> CLSS public javax.lang.model.util.SimpleTypeVisitorPreview<%0 extends java.lang.Object, %1 extends java.lang.Object> - anno 0 javax.annotation.processing.SupportedSourceVersion(javax.lang.model.SourceVersion value=RELEASE_26) + anno 0 javax.annotation.processing.SupportedSourceVersion(javax.lang.model.SourceVersion value=RELEASE_27) cons protected init() cons protected init({javax.lang.model.util.SimpleTypeVisitorPreview%0}) supr javax.lang.model.util.SimpleTypeVisitor14<{javax.lang.model.util.SimpleTypeVisitorPreview%0},{javax.lang.model.util.SimpleTypeVisitorPreview%1}> CLSS public javax.lang.model.util.TypeKindVisitor14<%0 extends java.lang.Object, %1 extends java.lang.Object> - anno 0 javax.annotation.processing.SupportedSourceVersion(javax.lang.model.SourceVersion value=RELEASE_26) + anno 0 javax.annotation.processing.SupportedSourceVersion(javax.lang.model.SourceVersion value=RELEASE_27) cons protected init() cons protected init({javax.lang.model.util.TypeKindVisitor14%0}) supr javax.lang.model.util.TypeKindVisitor9<{javax.lang.model.util.TypeKindVisitor14%0},{javax.lang.model.util.TypeKindVisitor14%1}> @@ -2611,7 +2619,7 @@ meth public {javax.lang.model.util.TypeKindVisitor9%0} visitNoTypeAsModule(javax supr javax.lang.model.util.TypeKindVisitor8<{javax.lang.model.util.TypeKindVisitor9%0},{javax.lang.model.util.TypeKindVisitor9%1}> CLSS public javax.lang.model.util.TypeKindVisitorPreview<%0 extends java.lang.Object, %1 extends java.lang.Object> - anno 0 javax.annotation.processing.SupportedSourceVersion(javax.lang.model.SourceVersion value=RELEASE_26) + anno 0 javax.annotation.processing.SupportedSourceVersion(javax.lang.model.SourceVersion value=RELEASE_27) cons protected init() cons protected init({javax.lang.model.util.TypeKindVisitorPreview%0}) supr javax.lang.model.util.TypeKindVisitor14<{javax.lang.model.util.TypeKindVisitorPreview%0},{javax.lang.model.util.TypeKindVisitorPreview%1}> diff --git a/java/libs.nbjavacapi/external/binaries-list b/java/libs.nbjavacapi/external/binaries-list index ce8c570f6590..0d8c04c8df34 100644 --- a/java/libs.nbjavacapi/external/binaries-list +++ b/java/libs.nbjavacapi/external/binaries-list @@ -14,5 +14,5 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -162196CDF0DAE37B7D3AD7991DE4310B78AFA30F com.dukescript.nbjavac:nb-javac:jdk-26+27 -F9B91950111918341594B7B5641B3731CA8CCF80 com.dukescript.nbjavac:nb-javac:jdk-26+27:api +X file:${nb_all}/nb-javac/make/langtools/netbeans/nb-javac/dist/nb-javac-jdk-27+14-api.jar nb-javac-jdk-26+27-api.jar +X file:${nb_all}/nb-javac/make/langtools/netbeans/nb-javac/dist/nb-javac-jdk-27+14-impl.jar nb-javac-jdk-26+27.jar diff --git a/java/spi.java.hints/src/org/netbeans/modules/java/hints/spiimpl/Utilities.java b/java/spi.java.hints/src/org/netbeans/modules/java/hints/spiimpl/Utilities.java index efae473d7a15..fe0dd9459cc7 100644 --- a/java/spi.java.hints/src/org/netbeans/modules/java/hints/spiimpl/Utilities.java +++ b/java/spi.java.hints/src/org/netbeans/modules/java/hints/spiimpl/Utilities.java @@ -68,7 +68,6 @@ import com.sun.tools.javac.parser.ScannerFactory; import com.sun.tools.javac.parser.Tokens.Token; import com.sun.tools.javac.parser.Tokens.TokenKind; -import com.sun.tools.javac.tree.EndPosTable; import com.sun.tools.javac.tree.JCTree; import com.sun.tools.javac.tree.JCTree.JCCase; import com.sun.tools.javac.tree.JCTree.JCCatch; @@ -1259,7 +1258,7 @@ public JackpotJavacParser(Context ctx, NBParserFactory fac, boolean keepLineMap, CancelService cancelService, Names names) { - super(fac, S, keepDocComments, keepLineMap, true, false, cancelService); + super(fac, S, keepDocComments, keepLineMap, false, cancelService); this.ctx = ctx; this.make = com.sun.tools.javac.tree.TreeMaker.instance(ctx); this.dollar = names.fromString("$"); @@ -1471,7 +1470,7 @@ private static boolean isSynthetic(CompilationUnitTree cut, Tree leaf) throws Nu IdentifierTree it = (IdentifierTree) mit.getMethodSelect(); if ("super".equals(it.getName().toString())) { - return ((JCCompilationUnit) cut).endPositions.getEndPos(tree) == (-1); + return tree.endpos == (-1); } } } @@ -1570,22 +1569,7 @@ public long getStartPosition() { @Override public long getEndPosition() { if (delegate instanceof JCDiagnostic jcDiag) { - return jcDiag.getDiagnosticPosition().getEndPosition(new EndPosTable() { - @Override public int getEndPos(JCTree tree) { - return (int) sp.getEndPosition(null, tree); - } - @Override - public T storeEnd(T tree, int endpos) { - throw new UnsupportedOperationException("Not supported yet."); - } - @Override - public void setErrorEndPos(int errpos) { - throw new UnsupportedOperationException("Not supported yet."); - } - @Override public int replaceTree(JCTree oldtree, JCTree newtree) { - throw new UnsupportedOperationException("Not supported yet."); - } - }) + offset; + return jcDiag.getDiagnosticPosition().getEndPosition() + offset; } return delegate.getEndPosition() + offset; } diff --git a/nbbuild/antsrc/org/netbeans/nbbuild/extlibs/DownloadBinaries.java b/nbbuild/antsrc/org/netbeans/nbbuild/extlibs/DownloadBinaries.java index d5d5871e2430..37ac4c023c5b 100644 --- a/nbbuild/antsrc/org/netbeans/nbbuild/extlibs/DownloadBinaries.java +++ b/nbbuild/antsrc/org/netbeans/nbbuild/extlibs/DownloadBinaries.java @@ -167,7 +167,7 @@ public void execute() throws BuildException { MavenCoordinate mc = MavenCoordinate.fromGradleFormat(hashAndFile[1]); success &= fillInFile(hashAndFile[0], mc.toArtifactFilename(), manifest, () -> mavenFile(mc)); } else if (urlMatcher.matches()) { - success &= fillInFile(hashAndFile[0], urlMatcher.group(3), manifest, () -> downloadFromServer(this, new URL(urlMatcher.group(1)))); + success &= fillInFile(hashAndFile[0], urlMatcher.group(3), manifest, () -> downloadFromServer(this, new URL(urlMatcher.group(1).replace("${nb_all}", getProject().getProperty("nb_all"))))); } else { success &= fillInFile(hashAndFile[0], hashAndFile[1], manifest, () -> legacyDownload(hashAndFile[0] + "-" + hashAndFile[1])); } @@ -227,7 +227,7 @@ private boolean fillInFile(String expectedHash, String baseName, File manifest, if (!f.exists() || !hash(f).equals(expectedHash)) { log("Creating " + f); String cacheName = expectedHash + "-" + baseName; - if (cache != null) { + if (cache != null && !"X".equals(expectedHash)) { cache.mkdirs(); File cacheFile = new File(cache, cacheName); if (!cacheFile.exists()) { @@ -248,13 +248,17 @@ private boolean fillInFile(String expectedHash, String baseName, File manifest, if(! f.exists()) { return false; } - String actualHash = hash(f); - if (!actualHash.equals(expectedHash)) { - log("File " + f + " requested by " + manifest + " to have hash " + - expectedHash + " actually had hash " + actualHash, Project.MSG_WARN); - return false; + if (!"X".equals(expectedHash)) { + String actualHash = hash(f); + if (!actualHash.equals(expectedHash)) { + log("File " + f + " requested by " + manifest + " to have hash " + + expectedHash + " actually had hash " + actualHash, Project.MSG_WARN); + return false; + } + log("Have " + f + " with expected hash", Project.MSG_VERBOSE); + } else { + log("Have " + f + " with, hash check skipped", Project.MSG_VERBOSE); } - log("Have " + f + " with expected hash", Project.MSG_VERBOSE); return true; } else { if (f.exists()) { @@ -277,7 +281,7 @@ private boolean doDownload(String cacheName, File destination, String expectedHa if (expectedHash != null) { String actualHash = hash(new ByteArrayInputStream(downloaded)); - if (!expectedHash.equals(actualHash)) { + if (!expectedHash.equals(actualHash) && !"X".equals(expectedHash)) { this.log("Download of " + cacheName + " produced content with hash " + actualHash + " when " + expectedHash + " was expected", Project.MSG_WARN); From b9f2267e1795147888e222bf587608a22b06834f Mon Sep 17 00:00:00 2001 From: Jan Lahoda Date: Tue, 28 Apr 2026 06:53:08 +0200 Subject: [PATCH 2/7] Adjusting to JDK27b19. --- .../modules/java/completion/BaseTask.java | 14 +++++++++-- .../api/java/source/TreeUtilities.java | 9 +++++++ .../modules/java/source/save/Reindenter.java | 13 +++++++--- java/libs.javacapi/external/binaries-list | 4 ++-- java/libs.nbjavacapi/external/binaries-list | 4 ++-- .../modules/java/hints/spiimpl/Utilities.java | 24 +++++++++++++++++-- 6 files changed, 57 insertions(+), 11 deletions(-) diff --git a/java/java.completion/src/org/netbeans/modules/java/completion/BaseTask.java b/java/java.completion/src/org/netbeans/modules/java/completion/BaseTask.java index 2346cd89d170..7cdc90cd5e86 100644 --- a/java/java.completion/src/org/netbeans/modules/java/completion/BaseTask.java +++ b/java/java.completion/src/org/netbeans/modules/java/completion/BaseTask.java @@ -717,22 +717,32 @@ private SourcePositionsImpl(Tree root, SourcePositions original, SourcePositions @Override public long getStartPosition(CompilationUnitTree compilationUnitTree, Tree tree) { + return getStartPosition(tree); + } + + @Override + public long getStartPosition(Tree tree) { if (tree == root) { return startOffset; } found = false; scan(root, tree); - return found ? modified.getStartPosition(compilationUnitTree, tree) + startOffset : original.getStartPosition(compilationUnitTree, tree); + return found ? modified.getStartPosition(tree) + startOffset : original.getStartPosition(tree); } @Override public long getEndPosition(CompilationUnitTree compilationUnitTree, Tree tree) { + return getEndPosition(tree); + } + + @Override + public long getEndPosition(Tree tree) { if (tree == root) { return endOffset; } found = false; scan(root, tree); - return found ? modified.getEndPosition(compilationUnitTree, tree) + startOffset : original.getEndPosition(compilationUnitTree, tree); + return found ? modified.getEndPosition(tree) + startOffset : original.getEndPosition(tree); } @Override diff --git a/java/java.source.base/src/org/netbeans/api/java/source/TreeUtilities.java b/java/java.source.base/src/org/netbeans/api/java/source/TreeUtilities.java index aa81ca5ece88..240c618ddabc 100644 --- a/java/java.source.base/src/org/netbeans/api/java/source/TreeUtilities.java +++ b/java/java.source.base/src/org/netbeans/api/java/source/TreeUtilities.java @@ -844,11 +844,20 @@ private ParserSourcePositions(JavacParser parser, int offset) { @Override public long getStartPosition(CompilationUnitTree file, Tree tree) { + return getStartPosition(tree); + } + + @Override + public long getStartPosition(Tree tree) { return parser.getStartPos((JCTree)tree) - offset; } @Override public long getEndPosition(CompilationUnitTree file, Tree tree) { + return getEndPosition(tree); + } + @Override + public long getEndPosition(Tree tree) { return parser.getEndPos((JCTree)tree) - offset; } } diff --git a/java/java.source.base/src/org/netbeans/modules/java/source/save/Reindenter.java b/java/java.source.base/src/org/netbeans/modules/java/source/save/Reindenter.java index 1a4a2da41378..0294c9981c3e 100644 --- a/java/java.source.base/src/org/netbeans/modules/java/source/save/Reindenter.java +++ b/java/java.source.base/src/org/netbeans/modules/java/source/save/Reindenter.java @@ -276,12 +276,19 @@ public void report(Diagnostic diagnostic) { sp = new SourcePositions() { @Override public long getStartPosition(CompilationUnitTree file, Tree tree) { - return currentEmbeddingStartOffset + psp[0].getStartPosition(file, tree) - 1; + return getStartPosition(tree); + } + @Override + public long getStartPosition(Tree tree) { + return currentEmbeddingStartOffset + psp[0].getStartPosition(tree) - 1; } - @Override public long getEndPosition(CompilationUnitTree file, Tree tree) { - return currentEmbeddingStartOffset + psp[0].getEndPosition(file, tree) - 1; + return getEndPosition(tree); + } + @Override + public long getEndPosition(Tree tree) { + return currentEmbeddingStartOffset + psp[0].getEndPosition(tree) - 1; } }; } diff --git a/java/libs.javacapi/external/binaries-list b/java/libs.javacapi/external/binaries-list index 0d8c04c8df34..117372e114af 100644 --- a/java/libs.javacapi/external/binaries-list +++ b/java/libs.javacapi/external/binaries-list @@ -14,5 +14,5 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -X file:${nb_all}/nb-javac/make/langtools/netbeans/nb-javac/dist/nb-javac-jdk-27+14-api.jar nb-javac-jdk-26+27-api.jar -X file:${nb_all}/nb-javac/make/langtools/netbeans/nb-javac/dist/nb-javac-jdk-27+14-impl.jar nb-javac-jdk-26+27.jar +X file:${nb_all}/nb-javac/make/langtools/netbeans/nb-javac/dist/nb-javac-jdk-27+19-api.jar nb-javac-jdk-26+27-api.jar +X file:${nb_all}/nb-javac/make/langtools/netbeans/nb-javac/dist/nb-javac-jdk-27+19-impl.jar nb-javac-jdk-26+27.jar diff --git a/java/libs.nbjavacapi/external/binaries-list b/java/libs.nbjavacapi/external/binaries-list index 0d8c04c8df34..117372e114af 100644 --- a/java/libs.nbjavacapi/external/binaries-list +++ b/java/libs.nbjavacapi/external/binaries-list @@ -14,5 +14,5 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -X file:${nb_all}/nb-javac/make/langtools/netbeans/nb-javac/dist/nb-javac-jdk-27+14-api.jar nb-javac-jdk-26+27-api.jar -X file:${nb_all}/nb-javac/make/langtools/netbeans/nb-javac/dist/nb-javac-jdk-27+14-impl.jar nb-javac-jdk-26+27.jar +X file:${nb_all}/nb-javac/make/langtools/netbeans/nb-javac/dist/nb-javac-jdk-27+19-api.jar nb-javac-jdk-26+27-api.jar +X file:${nb_all}/nb-javac/make/langtools/netbeans/nb-javac/dist/nb-javac-jdk-27+19-impl.jar nb-javac-jdk-26+27.jar diff --git a/java/spi.java.hints/src/org/netbeans/modules/java/hints/spiimpl/Utilities.java b/java/spi.java.hints/src/org/netbeans/modules/java/hints/spiimpl/Utilities.java index fe0dd9459cc7..bce678532be8 100644 --- a/java/spi.java.hints/src/org/netbeans/modules/java/hints/spiimpl/Utilities.java +++ b/java/spi.java.hints/src/org/netbeans/modules/java/hints/spiimpl/Utilities.java @@ -1533,12 +1533,22 @@ private record OffsetSourcePositions(SourcePositions delegate, long offset) impl @Override public long getStartPosition(CompilationUnitTree cut, Tree tree) { - return delegate.getStartPosition(cut, tree) + offset; + return getStartPosition(tree); + } + + @Override + public long getStartPosition(Tree tree) { + return delegate.getStartPosition(tree) + offset; } @Override public long getEndPosition(CompilationUnitTree cut, Tree tree) { - return delegate.getEndPosition(cut, tree) + offset; + return getEndPosition(tree); + } + + @Override + public long getEndPosition(Tree tree) { + return delegate.getEndPosition(tree) + offset; } } @@ -1600,11 +1610,21 @@ private record ParserSourcePositions(JavacParser parser) implements SourcePositi @Override public long getStartPosition(CompilationUnitTree file, Tree tree) { + return getStartPosition(tree); + } + + @Override + public long getStartPosition(Tree tree) { return parser.getStartPos((JCTree)tree); } @Override public long getEndPosition(CompilationUnitTree file, Tree tree) { + return getEndPosition(tree); + } + + @Override + public long getEndPosition(Tree tree) { return parser.getEndPos((JCTree)tree); } } From 5d694ce3e23d5bb76f5616133158954985047304 Mon Sep 17 00:00:00 2001 From: Jan Lahoda Date: Fri, 29 May 2026 12:05:43 +0200 Subject: [PATCH 3/7] Upgrade to nb-javac from JDK 27. --- java/libs.javacapi/external/binaries-list | 4 ++-- .../external/nb-javac-jdk-27+23-license.txt} | 4 ++-- .../nbproject/org-netbeans-libs-javacapi.sig | 18 +++++++++++++----- java/libs.javacapi/nbproject/project.xml | 4 ++-- java/libs.nbjavacapi/external/binaries-list | 4 ++-- .../external/nb-javac-jdk-27+23-license.txt} | 0 .../nbproject/project.properties | 4 ++-- java/libs.nbjavacapi/nbproject/project.xml | 8 ++++---- 8 files changed, 27 insertions(+), 19 deletions(-) rename java/{libs.nbjavacapi/external/nb-javac-jdk-26+27-license.txt => libs.javacapi/external/nb-javac-jdk-27+23-license.txt} (99%) rename java/{libs.javacapi/external/nb-javac-jdk-26+27-license.txt => libs.nbjavacapi/external/nb-javac-jdk-27+23-license.txt} (100%) diff --git a/java/libs.javacapi/external/binaries-list b/java/libs.javacapi/external/binaries-list index 117372e114af..5a8882711353 100644 --- a/java/libs.javacapi/external/binaries-list +++ b/java/libs.javacapi/external/binaries-list @@ -14,5 +14,5 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -X file:${nb_all}/nb-javac/make/langtools/netbeans/nb-javac/dist/nb-javac-jdk-27+19-api.jar nb-javac-jdk-26+27-api.jar -X file:${nb_all}/nb-javac/make/langtools/netbeans/nb-javac/dist/nb-javac-jdk-27+19-impl.jar nb-javac-jdk-26+27.jar +09FA4E057434BFE5185C2B4A19DA1F764F65AA55 com.dukescript.nbjavac:nb-javac:jdk-27+23 +0DD22CB122CED2E4BF142F59B6F24EF7C3EFEE22 com.dukescript.nbjavac:nb-javac:jdk-27+23:api diff --git a/java/libs.nbjavacapi/external/nb-javac-jdk-26+27-license.txt b/java/libs.javacapi/external/nb-javac-jdk-27+23-license.txt similarity index 99% rename from java/libs.nbjavacapi/external/nb-javac-jdk-26+27-license.txt rename to java/libs.javacapi/external/nb-javac-jdk-27+23-license.txt index 42327cc242fb..1dabda666b2d 100644 --- a/java/libs.nbjavacapi/external/nb-javac-jdk-26+27-license.txt +++ b/java/libs.javacapi/external/nb-javac-jdk-27+23-license.txt @@ -1,7 +1,7 @@ Name: Javac Compiler Implementation Description: Javac Compiler Implementation -Version: 26+27 -Files: nb-javac-jdk-26+27-api.jar nb-javac-jdk-26+27.jar +Version: 27+23 +Files: nb-javac-jdk-27+23-api.jar nb-javac-jdk-27+23.jar License: GPL-2-CP Origin: OpenJDK (https://github.com/openjdk/jdk) Source: https://github.com/openjdk/jdk diff --git a/java/libs.javacapi/nbproject/org-netbeans-libs-javacapi.sig b/java/libs.javacapi/nbproject/org-netbeans-libs-javacapi.sig index 5261c6b5ec90..c5a05805b0b8 100644 --- a/java/libs.javacapi/nbproject/org-netbeans-libs-javacapi.sig +++ b/java/libs.javacapi/nbproject/org-netbeans-libs-javacapi.sig @@ -1,5 +1,5 @@ #Signature file v4.1 -#Version 8.56.0 +#Version 8.57.0 CLSS public abstract interface com.sun.source.doctree.AttributeTree innr public final static !enum ValueKind @@ -924,8 +924,12 @@ meth public abstract com.sun.source.tree.ExpressionTree getValue() CLSS public abstract interface com.sun.source.util.DocSourcePositions intf com.sun.source.util.SourcePositions -meth public abstract long getEndPosition(com.sun.source.tree.CompilationUnitTree,com.sun.source.doctree.DocCommentTree,com.sun.source.doctree.DocTree) -meth public abstract long getStartPosition(com.sun.source.tree.CompilationUnitTree,com.sun.source.doctree.DocCommentTree,com.sun.source.doctree.DocTree) +meth public abstract long getEndPosition(com.sun.source.doctree.DocCommentTree,com.sun.source.doctree.DocTree) +meth public abstract long getStartPosition(com.sun.source.doctree.DocCommentTree,com.sun.source.doctree.DocTree) +meth public long getEndPosition(com.sun.source.tree.CompilationUnitTree,com.sun.source.doctree.DocCommentTree,com.sun.source.doctree.DocTree) + anno 0 java.lang.Deprecated() +meth public long getStartPosition(com.sun.source.tree.CompilationUnitTree,com.sun.source.doctree.DocCommentTree,com.sun.source.doctree.DocTree) + anno 0 java.lang.Deprecated() CLSS public abstract interface com.sun.source.util.DocTreeFactory meth public abstract com.sun.source.doctree.AttributeTree newAttributeTree(javax.lang.model.element.Name,com.sun.source.doctree.AttributeTree$ValueKind,java.util.List) @@ -1222,8 +1226,12 @@ meth public {com.sun.source.util.SimpleTreeVisitor%0} visitYield(com.sun.source. supr java.lang.Object CLSS public abstract interface com.sun.source.util.SourcePositions -meth public abstract long getEndPosition(com.sun.source.tree.CompilationUnitTree,com.sun.source.tree.Tree) -meth public abstract long getStartPosition(com.sun.source.tree.CompilationUnitTree,com.sun.source.tree.Tree) +meth public abstract long getEndPosition(com.sun.source.tree.Tree) +meth public abstract long getStartPosition(com.sun.source.tree.Tree) +meth public long getEndPosition(com.sun.source.tree.CompilationUnitTree,com.sun.source.tree.Tree) + anno 0 java.lang.Deprecated() +meth public long getStartPosition(com.sun.source.tree.CompilationUnitTree,com.sun.source.tree.Tree) + anno 0 java.lang.Deprecated() CLSS public final com.sun.source.util.TaskEvent cons public init(com.sun.source.util.TaskEvent$Kind) diff --git a/java/libs.javacapi/nbproject/project.xml b/java/libs.javacapi/nbproject/project.xml index 9e3cab61ae0c..dea30a9a27cb 100644 --- a/java/libs.javacapi/nbproject/project.xml +++ b/java/libs.javacapi/nbproject/project.xml @@ -40,11 +40,11 @@ - external/nb-javac-jdk-26+27-api.jar + external/nb-javac-jdk-27+23-api.jar - external/nb-javac-jdk-26+27.jar + external/nb-javac-jdk-27+23.jar diff --git a/java/libs.nbjavacapi/external/binaries-list b/java/libs.nbjavacapi/external/binaries-list index 117372e114af..5a8882711353 100644 --- a/java/libs.nbjavacapi/external/binaries-list +++ b/java/libs.nbjavacapi/external/binaries-list @@ -14,5 +14,5 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -X file:${nb_all}/nb-javac/make/langtools/netbeans/nb-javac/dist/nb-javac-jdk-27+19-api.jar nb-javac-jdk-26+27-api.jar -X file:${nb_all}/nb-javac/make/langtools/netbeans/nb-javac/dist/nb-javac-jdk-27+19-impl.jar nb-javac-jdk-26+27.jar +09FA4E057434BFE5185C2B4A19DA1F764F65AA55 com.dukescript.nbjavac:nb-javac:jdk-27+23 +0DD22CB122CED2E4BF142F59B6F24EF7C3EFEE22 com.dukescript.nbjavac:nb-javac:jdk-27+23:api diff --git a/java/libs.javacapi/external/nb-javac-jdk-26+27-license.txt b/java/libs.nbjavacapi/external/nb-javac-jdk-27+23-license.txt similarity index 100% rename from java/libs.javacapi/external/nb-javac-jdk-26+27-license.txt rename to java/libs.nbjavacapi/external/nb-javac-jdk-27+23-license.txt diff --git a/java/libs.nbjavacapi/nbproject/project.properties b/java/libs.nbjavacapi/nbproject/project.properties index 324f20a552d1..959aad09bcc6 100644 --- a/java/libs.nbjavacapi/nbproject/project.properties +++ b/java/libs.nbjavacapi/nbproject/project.properties @@ -18,8 +18,8 @@ javac.release=17 javac.compilerargs=-Xlint -Xlint:-serial license.file.override=${nb_all}/nbbuild/licenses/GPL-2-CP -release.external/nb-javac-jdk-26+27-api.jar=modules/ext/nb-javac-jdk-26-27-api.jar -release.external/nb-javac-jdk-26+27.jar=modules/ext/nb-javac-jdk-26-27.jar +release.external/nb-javac-jdk-27+23-api.jar=modules/ext/nb-javac-jdk-27-23-api.jar +release.external/nb-javac-jdk-27+23.jar=modules/ext/nb-javac-jdk-27-23.jar # for tests requires.nb.javac=true diff --git a/java/libs.nbjavacapi/nbproject/project.xml b/java/libs.nbjavacapi/nbproject/project.xml index 30ffb3bf7501..a3bab38765f3 100644 --- a/java/libs.nbjavacapi/nbproject/project.xml +++ b/java/libs.nbjavacapi/nbproject/project.xml @@ -45,12 +45,12 @@ - ext/nb-javac-jdk-26-27-api.jar - external/nb-javac-jdk-26+27-api.jar + ext/nb-javac-jdk-27-23-api.jar + external/nb-javac-jdk-27+23-api.jar - ext/nb-javac-jdk-26-27.jar - external/nb-javac-jdk-26+27.jar + ext/nb-javac-jdk-27-23.jar + external/nb-javac-jdk-27+23.jar From e247fc9adb3588c9a03e28faaebe3a4e084b2721 Mon Sep 17 00:00:00 2001 From: Jan Lahoda Date: Fri, 29 May 2026 14:39:26 +0200 Subject: [PATCH 4/7] Correctly duplicating var type. --- .../modules/java/source/transform/TreeDuplicator.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java/java.source.base/src/org/netbeans/modules/java/source/transform/TreeDuplicator.java b/java/java.source.base/src/org/netbeans/modules/java/source/transform/TreeDuplicator.java index b2dd97634c67..0501b74fb35f 100644 --- a/java/java.source.base/src/org/netbeans/modules/java/source/transform/TreeDuplicator.java +++ b/java/java.source.base/src/org/netbeans/modules/java/source/transform/TreeDuplicator.java @@ -586,8 +586,8 @@ public Tree visitVariable(VariableTree tree, Void p) { @Override public Tree visitVarType(VarTypeTree tree, Void p) { - EmptyStatementTree n = make.EmptyStatement(); -// model.setType(n, model.getType(tree)); + VarTypeTree n = make.VarType(); + model.setType(n, model.getType(tree)); comments.copyComments(tree, n); model.setPos(n, model.getPos(tree)); return n; From 8f18e29dd3fde143e22825bdb54bdada6853f51e Mon Sep 17 00:00:00 2001 From: Jan Lahoda Date: Fri, 29 May 2026 14:39:47 +0200 Subject: [PATCH 5/7] Fixing search for javadoc references. --- .../modules/java/editor/base/javadoc/JavadocImports.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/java/java.editor.base/src/org/netbeans/modules/java/editor/base/javadoc/JavadocImports.java b/java/java.editor.base/src/org/netbeans/modules/java/editor/base/javadoc/JavadocImports.java index 2d91d7065f64..1d4dbee96d92 100644 --- a/java/java.editor.base/src/org/netbeans/modules/java/editor/base/javadoc/JavadocImports.java +++ b/java/java.editor.base/src/org/netbeans/modules/java/editor/base/javadoc/JavadocImports.java @@ -434,12 +434,11 @@ public Void scan(DocTree node, Void p) { result[0] = trees.getElement(getCurrentPath()); } else { long startPosition = positions.getStartPosition(javac.getCompilationUnit(), node); - long endPosition = positions.getEndPosition(javac.getCompilationUnit(), node); - if (startPosition == 0 && endPosition == -1) {//vanilla javac returns 0 for start and -1 for end positions + if (startPosition == 0) {//vanilla javac returns 0 for start if (parentNode != null && parentNode.toString().contains(node.toString())) { long parentNodeStartPosition = positions.getStartPosition(javac.getCompilationUnit(), docComment, parentNode); startPosition = parentNode.toString().indexOf(node.toString()) + parentNodeStartPosition; - endPosition = startPosition + node.toString().length(); + long endPosition = startPosition + node.toString().length(); if (startPosition <= offset && endPosition >= offset) { result[0] = trees.getElement(getCurrentPath()); From ad72ff8d82ed6548ec6d0f0cd3c7968d766405bd Mon Sep 17 00:00:00 2001 From: Jan Lahoda Date: Fri, 29 May 2026 14:51:22 +0200 Subject: [PATCH 6/7] Undoing the changes to external binaries download - this should be done independently, if at all. --- .../nbbuild/extlibs/DownloadBinaries.java | 22 ++++++++----------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/nbbuild/antsrc/org/netbeans/nbbuild/extlibs/DownloadBinaries.java b/nbbuild/antsrc/org/netbeans/nbbuild/extlibs/DownloadBinaries.java index 37ac4c023c5b..d5d5871e2430 100644 --- a/nbbuild/antsrc/org/netbeans/nbbuild/extlibs/DownloadBinaries.java +++ b/nbbuild/antsrc/org/netbeans/nbbuild/extlibs/DownloadBinaries.java @@ -167,7 +167,7 @@ public void execute() throws BuildException { MavenCoordinate mc = MavenCoordinate.fromGradleFormat(hashAndFile[1]); success &= fillInFile(hashAndFile[0], mc.toArtifactFilename(), manifest, () -> mavenFile(mc)); } else if (urlMatcher.matches()) { - success &= fillInFile(hashAndFile[0], urlMatcher.group(3), manifest, () -> downloadFromServer(this, new URL(urlMatcher.group(1).replace("${nb_all}", getProject().getProperty("nb_all"))))); + success &= fillInFile(hashAndFile[0], urlMatcher.group(3), manifest, () -> downloadFromServer(this, new URL(urlMatcher.group(1)))); } else { success &= fillInFile(hashAndFile[0], hashAndFile[1], manifest, () -> legacyDownload(hashAndFile[0] + "-" + hashAndFile[1])); } @@ -227,7 +227,7 @@ private boolean fillInFile(String expectedHash, String baseName, File manifest, if (!f.exists() || !hash(f).equals(expectedHash)) { log("Creating " + f); String cacheName = expectedHash + "-" + baseName; - if (cache != null && !"X".equals(expectedHash)) { + if (cache != null) { cache.mkdirs(); File cacheFile = new File(cache, cacheName); if (!cacheFile.exists()) { @@ -248,17 +248,13 @@ private boolean fillInFile(String expectedHash, String baseName, File manifest, if(! f.exists()) { return false; } - if (!"X".equals(expectedHash)) { - String actualHash = hash(f); - if (!actualHash.equals(expectedHash)) { - log("File " + f + " requested by " + manifest + " to have hash " + - expectedHash + " actually had hash " + actualHash, Project.MSG_WARN); - return false; - } - log("Have " + f + " with expected hash", Project.MSG_VERBOSE); - } else { - log("Have " + f + " with, hash check skipped", Project.MSG_VERBOSE); + String actualHash = hash(f); + if (!actualHash.equals(expectedHash)) { + log("File " + f + " requested by " + manifest + " to have hash " + + expectedHash + " actually had hash " + actualHash, Project.MSG_WARN); + return false; } + log("Have " + f + " with expected hash", Project.MSG_VERBOSE); return true; } else { if (f.exists()) { @@ -281,7 +277,7 @@ private boolean doDownload(String cacheName, File destination, String expectedHa if (expectedHash != null) { String actualHash = hash(new ByteArrayInputStream(downloaded)); - if (!expectedHash.equals(actualHash) && !"X".equals(expectedHash)) { + if (!expectedHash.equals(actualHash)) { this.log("Download of " + cacheName + " produced content with hash " + actualHash + " when " + expectedHash + " was expected", Project.MSG_WARN); From f13d6f058f347fe26b6a8493e7b009ff13fa8876 Mon Sep 17 00:00:00 2001 From: Jan Lahoda Date: Fri, 29 May 2026 14:53:59 +0200 Subject: [PATCH 7/7] Adjusting build JDKs, as suggested. --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 20f93223b509..b94eb0244038 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1470,10 +1470,10 @@ jobs: timeout-minutes: 60 strategy: matrix: - java: [ '21', '26' ] + java: [ '21', '27-ea' ] config: [ 'batch1', 'batch2' ] exclude: - - java: ${{ github.event_name == 'pull_request' && 'nothing' || '26' }} + - java: ${{ github.event_name == 'pull_request' && 'nothing' || '27-ea' }} fail-fast: false steps: