From aeb4f65f42b64b10492c8749ef33539ec72751a3 Mon Sep 17 00:00:00 2001 From: Jan Stolze Date: Tue, 12 Mar 2024 09:54:03 +0100 Subject: [PATCH 1/2] Fixed Javadoc formatting issues Rebuild with the 2023-12 toolchain. --- META-INF/MANIFEST.MF | 8 ++-- .../formatter/FormatterCommentParser.java | 40 ++++++++++++++++--- 2 files changed, 38 insertions(+), 10 deletions(-) diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF index 076f1ea..20d34de 100644 --- a/META-INF/MANIFEST.MF +++ b/META-INF/MANIFEST.MF @@ -1,10 +1,10 @@ Manifest-Version: 1.0 Bundle-SymbolicName: OldJavaFormatter;singleton:=true Bundle-Name: OldJavaFormatter -Bundle-Version: 1.12.0 -Require-Bundle: org.eclipse.jdt.core;bundle-version="[3.27.0,4.0.0)", - org.eclipse.jface.text;bundle-version="[3.18.100,4.0.0)", - org.eclipse.core.runtime;bundle-version="[3.23.0,4.0.0)" +Bundle-Version: 1.13.0 +Require-Bundle: org.eclipse.jdt.core;bundle-version="[3.36.0,4.0.0)", + org.eclipse.jface.text;bundle-version="[3.24.200,4.0.0)", + org.eclipse.core.runtime;bundle-version="[3.30.0,4.0.0)" Bundle-ManifestVersion: 2 Bundle-RequiredExecutionEnvironment: JavaSE-1.8, JavaSE-11 diff --git a/src/org/eclipse/jdt/luna/formatter/FormatterCommentParser.java b/src/org/eclipse/jdt/luna/formatter/FormatterCommentParser.java index efc30bb..3f631ca 100644 --- a/src/org/eclipse/jdt/luna/formatter/FormatterCommentParser.java +++ b/src/org/eclipse/jdt/luna/formatter/FormatterCommentParser.java @@ -14,6 +14,8 @@ import org.eclipse.jdt.core.compiler.CharOperation; import org.eclipse.jdt.core.compiler.InvalidInputException; +import org.eclipse.jdt.internal.compiler.ast.JavadocQualifiedTypeReference; +import org.eclipse.jdt.internal.compiler.ast.JavadocSingleTypeReference; import org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants; import org.eclipse.jdt.internal.compiler.parser.JavadocParser; import org.eclipse.jdt.internal.compiler.parser.ScannerHelper; @@ -60,7 +62,7 @@ public boolean parse(int start, int end) { * @see org.eclipse.jdt.internal.compiler.parser.JavadocParser#createArgumentReference(char[], int, boolean, java.lang.Object, long[], long) */ protected Object createArgumentReference(char[] name, int dim, boolean isVarargs, Object ref, long[] dimPositions, long argNamePos) throws InvalidInputException { - FormatJavadocReference typeRef = (FormatJavadocReference) ref; + FormatJavadocReference typeRef = toFormatJavadocReference(ref); if (dim > 0) { typeRef.sourceEnd = (int) dimPositions[dim-1]; } @@ -68,6 +70,23 @@ protected Object createArgumentReference(char[] name, int dim, boolean isVarargs return ref; } +private FormatJavadocReference toFormatJavadocReference(Object ref) +{ + FormatJavadocReference typeRef; + if(ref instanceof JavadocSingleTypeReference) { + JavadocSingleTypeReference j; + j = (JavadocSingleTypeReference)ref; + typeRef = new FormatJavadocReference(j.sourceStart, j.sourceEnd, this.scanner.getLineNumber(this.tagSourceStart)); + } + else if(ref instanceof JavadocQualifiedTypeReference) { + JavadocQualifiedTypeReference j; + j = (JavadocQualifiedTypeReference)ref; + typeRef = new FormatJavadocReference(j.sourceStart, j.sourceEnd, this.scanner.getLineNumber(this.tagSourceStart)); + } + else { typeRef = (FormatJavadocReference) ref;} + return typeRef; +} + /* (non-Javadoc) * @see org.eclipse.jdt.internal.compiler.parser.AbstractCommentParser#createFakeReference(int) */ @@ -84,16 +103,25 @@ protected boolean createFakeReference(int start) { * @see org.eclipse.jdt.internal.compiler.parser.JavadocParser#createFieldReference(java.lang.Object) */ protected Object createFieldReference(Object receiver) throws InvalidInputException { - int start = receiver == null ? this.memberStart : ((FormatJavadocReference)receiver).sourceStart; + int start = receiver == null ? this.memberStart : getSourceStart(receiver); int lineStart = this.scanner.getLineNumber(start); return new FormatJavadocReference(start, (int) this.identifierPositionStack[0], lineStart); } +private int getSourceStart(Object receiver) { + if(receiver instanceof JavadocQualifiedTypeReference) + return ((JavadocQualifiedTypeReference)receiver).sourceStart; + else if(receiver instanceof JavadocSingleTypeReference) { + return ((JavadocSingleTypeReference)receiver).sourceStart; + } + return -1; +} + /* (non-Javadoc) * @see org.eclipse.jdt.internal.compiler.parser.JavadocParser#createMethodReference(java.lang.Object, java.util.List) */ protected Object createMethodReference(Object receiver, @SuppressWarnings("rawtypes") List arguments) throws InvalidInputException { - int start = receiver == null ? this.memberStart : ((FormatJavadocReference) receiver).sourceStart; + int start = receiver == null ? this.memberStart : getSourceStart(receiver); int lineStart = this.scanner.getLineNumber(start); return new FormatJavadocReference(start, this.scanner.getCurrentTokenEndPosition(), lineStart); } @@ -649,8 +677,8 @@ protected boolean pushParamName(boolean isTypeParam) { * @see org.eclipse.jdt.internal.compiler.parser.JavadocParser#pushSeeRef(java.lang.Object) */ protected boolean pushSeeRef(Object statement) { - FormatJavadocReference reference = (FormatJavadocReference) statement; - int lineTagStart = this.scanner.getLineNumber(this.tagSourceStart); + FormatJavadocReference reference = toFormatJavadocReference(statement); + int lineTagStart = this.scanner.getLineNumber(this.tagSourceStart); FormatJavadocBlock block = new FormatJavadocBlock(this.tagSourceStart, this.tagSourceEnd, lineTagStart, this.tagValue); block.reference = reference; block.sourceEnd = reference.sourceEnd; @@ -730,7 +758,7 @@ private void pushText(int start, int end, int htmlIndex, int htmlDepth) { protected boolean pushThrowName(Object typeRef) { int lineStart = this.scanner.getLineNumber(this.tagSourceStart); FormatJavadocBlock block = new FormatJavadocBlock(this.tagSourceStart, this.tagSourceEnd, lineStart, this.tagValue); - block.reference = (FormatJavadocReference) typeRef; + block.reference = toFormatJavadocReference(typeRef); block.sourceEnd = block.reference.sourceEnd; pushOnAstStack(block, true); return true; From cf51438cec040bfccc512c0ecc4686adc7057d87 Mon Sep 17 00:00:00 2001 From: Jan Stolze Date: Wed, 26 Jun 2024 07:59:57 +0200 Subject: [PATCH 2/2] 2024-06 Build --- META-INF/MANIFEST.MF | 2 +- .../jdt/luna/formatter/BinaryExpressionFragmentBuilder.java | 6 ++++-- .../eclipse/jdt/luna/formatter/CodeFormatterVisitor.java | 4 ++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF index 20d34de..4e7a1c2 100644 --- a/META-INF/MANIFEST.MF +++ b/META-INF/MANIFEST.MF @@ -1,7 +1,7 @@ Manifest-Version: 1.0 Bundle-SymbolicName: OldJavaFormatter;singleton:=true Bundle-Name: OldJavaFormatter -Bundle-Version: 1.13.0 +Bundle-Version: 2024.06.0 Require-Bundle: org.eclipse.jdt.core;bundle-version="[3.36.0,4.0.0)", org.eclipse.jface.text;bundle-version="[3.24.200,4.0.0)", org.eclipse.core.runtime;bundle-version="[3.30.0,4.0.0)" diff --git a/src/org/eclipse/jdt/luna/formatter/BinaryExpressionFragmentBuilder.java b/src/org/eclipse/jdt/luna/formatter/BinaryExpressionFragmentBuilder.java index 4842038..aa4fcbe 100644 --- a/src/org/eclipse/jdt/luna/formatter/BinaryExpressionFragmentBuilder.java +++ b/src/org/eclipse/jdt/luna/formatter/BinaryExpressionFragmentBuilder.java @@ -368,8 +368,10 @@ public boolean visit(StringLiteralConcatenation stringLiteral, BlockScope scope) if (((stringLiteral.bits & ASTNode.ParenthesizedMASK) >> ASTNode.ParenthesizedSHIFT) != 0) { addRealFragment(stringLiteral); } else { - for (int i = 0, max = stringLiteral.counter; i < max; i++) { - addRealFragment(stringLiteral.literals[i]); + StringLiteral[] literals; + literals= stringLiteral.getLiterals(); + for (int i = 0, max = literals.length; i < max; i++) { + addRealFragment(literals[i]); if (i < max - 1) { this.operatorsList.add(Integer.valueOf(TerminalTokens.TokenNamePLUS)); } diff --git a/src/org/eclipse/jdt/luna/formatter/CodeFormatterVisitor.java b/src/org/eclipse/jdt/luna/formatter/CodeFormatterVisitor.java index 9e2c63f..258ff5b 100644 --- a/src/org/eclipse/jdt/luna/formatter/CodeFormatterVisitor.java +++ b/src/org/eclipse/jdt/luna/formatter/CodeFormatterVisitor.java @@ -5404,8 +5404,8 @@ public boolean visit(StringLiteralConcatenation stringLiteral, BlockScope scope) } this.scribe.printComment(Scribe.PRESERVE_EMPTY_LINES_IN_STRING_LITERAL_CONCATENATION); - ASTNode[] fragments = stringLiteral.literals; - int fragmentsSize = stringLiteral.counter; + ASTNode[] fragments = stringLiteral.getLiterals(); + int fragmentsSize = fragments.length; final LegacyBinaryOperatorFormatOption binopt = this.legacy.getFormatOptionForStringConcat();