You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by ak...@apache.org on 2022/10/19 04:24:21 UTC
[netbeans] branch master updated: add semantic highlight for when keyword (#4671)
This is an automated email from the ASF dual-hosted git repository.
akhileshsingh pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/netbeans.git
The following commit(s) were added to refs/heads/master by this push:
new 8b15150be2 add semantic highlight for when keyword (#4671)
8b15150be2 is described below
commit 8b15150be29cf545157b7bcaafd87a0bb7b23d14
Author: Meghna Jayan <me...@oracle.com>
AuthorDate: Wed Oct 19 09:54:14 2022 +0530
add semantic highlight for when keyword (#4671)
* add semantic highlight for when keyword
---
.../base/semantic/SemanticHighlighterBase.java | 21 ++++++++
.../java/editor/base/semantic/DetectorTest.java | 59 ++++++++++++++++++----
2 files changed, 69 insertions(+), 11 deletions(-)
diff --git a/java/java.editor.base/src/org/netbeans/modules/java/editor/base/semantic/SemanticHighlighterBase.java b/java/java.editor.base/src/org/netbeans/modules/java/editor/base/semantic/SemanticHighlighterBase.java
index 2bc7bf8f8b..22cc9b2e62 100644
--- a/java/java.editor.base/src/org/netbeans/modules/java/editor/base/semantic/SemanticHighlighterBase.java
+++ b/java/java.editor.base/src/org/netbeans/modules/java/editor/base/semantic/SemanticHighlighterBase.java
@@ -18,6 +18,9 @@
*/
package org.netbeans.modules.java.editor.base.semantic;
+import com.sun.source.tree.BindingPatternTree;
+import com.sun.source.tree.CaseLabelTree;
+import com.sun.source.tree.CaseTree;
import com.sun.source.tree.ClassTree;
import com.sun.source.tree.CompilationUnitTree;
import com.sun.source.tree.ExportsTree;
@@ -32,6 +35,7 @@ import com.sun.source.tree.ModuleTree;
import com.sun.source.tree.NewClassTree;
import com.sun.source.tree.OpensTree;
import com.sun.source.tree.ParameterizedTypeTree;
+import com.sun.source.tree.PatternCaseLabelTree;
import com.sun.source.tree.ProvidesTree;
import com.sun.source.tree.RequiresTree;
import com.sun.source.tree.Tree;
@@ -657,6 +661,23 @@ public abstract class SemanticHighlighterBase extends JavaParserResultTask {
return super.visitRequires(tree, p);
}
+ @Override
+ public Void visitCase(CaseTree node, Void p) {
+ tl.moveToOffset(sourcePositions.getStartPosition(info.getCompilationUnit(), node));
+ List<? extends CaseLabelTree> labels = node.getLabels();
+ for (CaseLabelTree labelTree : labels) {
+ if (labelTree.getKind().equals(Tree.Kind.PATTERN_CASE_LABEL)) {
+ PatternCaseLabelTree patternLabel = (PatternCaseLabelTree) labelTree;
+ tl.moveToOffset(sourcePositions.getEndPosition(info.getCompilationUnit(), patternLabel.getPattern()));
+ tl.moveNext();
+ if (tl.currentToken() != null && TokenUtilities.equals(tl.currentToken().text(), "when")) { //NOI18N
+ contextKeywords.add(tl.currentToken());
+ }
+ }
+ }
+ return super.visitCase(node, p);
+ }
+
@Override
public Void visitUses(UsesTree tree, Void p) {
tl.moveToOffset(sourcePositions.getStartPosition(info.getCompilationUnit(), tree));
diff --git a/java/java.editor.base/test/unit/src/org/netbeans/modules/java/editor/base/semantic/DetectorTest.java b/java/java.editor.base/test/unit/src/org/netbeans/modules/java/editor/base/semantic/DetectorTest.java
index 5440841b83..d765eec572 100644
--- a/java/java.editor.base/test/unit/src/org/netbeans/modules/java/editor/base/semantic/DetectorTest.java
+++ b/java/java.editor.base/test/unit/src/org/netbeans/modules/java/editor/base/semantic/DetectorTest.java
@@ -618,9 +618,9 @@ public class DetectorTest extends TestBase {
public void testSwitchPattern() throws Exception {
try {
- SourceVersion.valueOf("RELEASE_17"); //NOI18N
+ SourceVersion.valueOf("RELEASE_19"); //NOI18N
} catch (IllegalArgumentException ex) {
- //OK, no RELEASE_17, skip tests
+ //OK, no RELEASE_19, skip tests
return;
}
enablePreview();
@@ -630,7 +630,7 @@ public class DetectorTest extends TestBase {
+ " void m1() {\n"
+ " Object obj = \"test\";\n"
+ " switch (obj) {\n"
- + " case String s && s.equals(strColor) -> System.out.println(\"same\");\n"
+ + " case String s when s.equals(strColor) -> System.out.println(\"same\");\n"
+ " case default -> System.out.println(\"default\");\n"
+ " }\n"
+ " }\n"
@@ -642,14 +642,51 @@ public class DetectorTest extends TestBase {
+ "[PUBLIC, CLASS], 3:8-3:14\n"
+ "[LOCAL_VARIABLE, DECLARATION], 3:15-3:18\n"
+ "[LOCAL_VARIABLE], 4:16-4:19\n"
- + "[PUBLIC, CLASS], 5:17-5:23\n"
- + "[LOCAL_VARIABLE, DECLARATION], 5:24-5:25\n"
- + "[LOCAL_VARIABLE], 5:29-5:30\n"
- + "[PUBLIC, METHOD], 5:31-5:37\n"
- + "[PACKAGE_PRIVATE, FIELD], 5:38-5:46\n"
- + "[PUBLIC, CLASS], 5:51-5:57\n"
- + "[STATIC, PUBLIC, FIELD], 5:58-5:61\n"
- + "[PUBLIC, METHOD], 5:62-5:69\n"
+ + "[KEYWORD], 5:26-5:30\n"
+ + "[LOCAL_VARIABLE], 5:31-5:32\n"
+ + "[PUBLIC, METHOD], 5:33-5:39\n"
+ + "[PACKAGE_PRIVATE, FIELD], 5:40-5:48\n"
+ + "[PUBLIC, CLASS], 5:53-5:59\n"
+ + "[STATIC, PUBLIC, FIELD], 5:60-5:63\n"
+ + "[PUBLIC, METHOD], 5:64-5:71\n"
+ + "[PUBLIC, CLASS], 6:28-6:34\n"
+ + "[STATIC, PUBLIC, FIELD], 6:35-6:38\n"
+ + "[PUBLIC, METHOD], 6:39-6:46\n");
+ }
+
+ public void testRecordPattern() throws Exception {
+ try {
+ SourceVersion.valueOf("RELEASE_19"); //NOI18N
+ } catch (IllegalArgumentException ex) {
+ //OK, no RELEASE_19, skip tests
+ return;
+ }
+ enablePreview();
+ performTest("TestRecordPattern.java",
+ "public class TestRecordPattern {\n"
+ + " record Person(int name, int a){}\n"
+ + " void m1() {\n"
+ + " Person obj = new Person(1,2);\n"
+ + " switch (obj) {\n"
+ + " case Person(int x, int y) when x > 0 -> System.out.println(\"x greater than 0\");\n"
+ + " case default -> System.out.println(\"default\");\n"
+ + " }\n"
+ + " }\n"
+ + "}",
+ "[PUBLIC, CLASS, DECLARATION], 0:13-0:30\n"
+ + "[KEYWORD], 1:4-1:10\n"
+ + "[STATIC, PACKAGE_PRIVATE, RECORD, DECLARATION], 1:11-1:17\n"
+ + "[PUBLIC, RECORD_COMPONENT, DECLARATION], 1:22-1:26\n"
+ + "[PUBLIC, RECORD_COMPONENT, DECLARATION], 1:32-1:33\n"
+ + "[PACKAGE_PRIVATE, METHOD, UNUSED, DECLARATION], 2:9-2:11\n"
+ + "[STATIC, PACKAGE_PRIVATE, RECORD], 3:8-3:14\n"
+ + "[LOCAL_VARIABLE, DECLARATION], 3:15-3:18\n"
+ + "[PACKAGE_PRIVATE, CONSTRUCTOR], 3:25-3:31\n"
+ + "[LOCAL_VARIABLE], 4:16-4:19\n"
+ + "[KEYWORD], 5:38-5:42\n"
+ + "[PUBLIC, CLASS], 5:52-5:58\n"
+ + "[STATIC, PUBLIC, FIELD], 5:59-5:62\n"
+ + "[PUBLIC, METHOD], 5:63-5:70\n"
+ "[PUBLIC, CLASS], 6:28-6:34\n"
+ "[STATIC, PUBLIC, FIELD], 6:35-6:38\n"
+ "[PUBLIC, METHOD], 6:39-6:46\n");
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists