From 7eda891785dbd254aaaf81db42361c56769572c7 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Sun, 19 Nov 2023 00:51:58 +0100 Subject: [PATCH] Migrate type --- .../cursorless-engine/src/languages/java.ts | 10 ---- .../recorded/languages/java/changeType2.yml | 47 +++++++++++++++++++ .../recorded/languages/java/changeType3.yml | 39 +++++++++++++++ .../recorded/languages/java/changeType4.yml | 33 +++++++++++++ .../recorded/languages/java/changeType5.yml | 33 +++++++++++++ .../{takeTypeGust.yml => clearTypeGust.yml} | 10 ++-- .../{takeTypeGust2.yml => clearTypeGust2.yml} | 10 ++-- .../{takeTypeSoon.yml => clearTypeSoon.yml} | 10 ++-- .../{takeTypeSoon2.yml => clearTypeSoon2.yml} | 10 ++-- .../{takeTypeTrap.yml => clearTypeTrap.yml} | 10 ++-- .../{takeTypeTrap2.yml => clearTypeTrap2.yml} | 10 ++-- .../recorded/languages/java/takeType4.yml | 33 +++++++++++++ queries/java.scm | 41 ++++++++++++++++ 13 files changed, 256 insertions(+), 40 deletions(-) create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/changeType2.yml create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/changeType3.yml create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/changeType4.yml create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/changeType5.yml rename packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/{takeTypeGust.yml => clearTypeGust.yml} (81%) rename packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/{takeTypeGust2.yml => clearTypeGust2.yml} (81%) rename packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/{takeTypeSoon.yml => clearTypeSoon.yml} (80%) rename packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/{takeTypeSoon2.yml => clearTypeSoon2.yml} (80%) rename packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/{takeTypeTrap.yml => clearTypeTrap.yml} (80%) rename packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/{takeTypeTrap2.yml => clearTypeTrap2.yml} (80%) create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/takeType4.yml diff --git a/packages/cursorless-engine/src/languages/java.ts b/packages/cursorless-engine/src/languages/java.ts index 19e41b6d20..a488313c5a 100644 --- a/packages/cursorless-engine/src/languages/java.ts +++ b/packages/cursorless-engine/src/languages/java.ts @@ -29,16 +29,6 @@ const nodeMatchers: Partial< childRangeSelector(["argument_list", ";"], []), ), ), - type: trailingMatcher([ - "generic_type.type_arguments.type_identifier", - "generic_type.type_identifier", - "generic_type.scoped_type_identifier.type_identifier", - "type_identifier", - "local_variable_declaration[type]", - "array_creation_expression[type]", - "formal_parameter[type]", - "method_declaration[type]", - ]), value: leadingMatcher( [ "*[declarator][value]", diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/changeType2.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/changeType2.yml new file mode 100644 index 0000000000..1be2dccab6 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/changeType2.yml @@ -0,0 +1,47 @@ +languageId: java +command: + version: 6 + spokenForm: change type + action: + name: clearAndSetSelection + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: type} + usePrePhraseSnapshot: true +initialState: + documentContents: |- + public class MyClass { + private MyClass () { + Map map = new HashMap(); + List list = new ArrayList(); + } + } + selections: + - anchor: {line: 2, character: 12} + active: {line: 2, character: 12} + - anchor: {line: 3, character: 12} + active: {line: 3, character: 12} + - anchor: {line: 2, character: 42} + active: {line: 2, character: 42} + - anchor: {line: 3, character: 36} + active: {line: 3, character: 36} + marks: {} +finalState: + documentContents: |- + public class MyClass { + private MyClass () { + map = new (); + list = new (); + } + } + selections: + - anchor: {line: 2, character: 12} + active: {line: 2, character: 12} + - anchor: {line: 2, character: 23} + active: {line: 2, character: 23} + - anchor: {line: 3, character: 12} + active: {line: 3, character: 12} + - anchor: {line: 3, character: 24} + active: {line: 3, character: 24} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/changeType3.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/changeType3.yml new file mode 100644 index 0000000000..820968d708 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/changeType3.yml @@ -0,0 +1,39 @@ +languageId: java +command: + version: 6 + spokenForm: change type + action: + name: clearAndSetSelection + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: type} + usePrePhraseSnapshot: true +initialState: + documentContents: |- + public class MyClass { + private MyClass () { + Map map = new HashMap(); + List list = new ArrayList(); + } + } + selections: + - anchor: {line: 2, character: 32} + active: {line: 2, character: 32} + - anchor: {line: 3, character: 25} + active: {line: 3, character: 25} + marks: {} +finalState: + documentContents: |- + public class MyClass { + private MyClass () { + map = new HashMap(); + list = new ArrayList(); + } + } + selections: + - anchor: {line: 2, character: 12} + active: {line: 2, character: 12} + - anchor: {line: 3, character: 12} + active: {line: 3, character: 12} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/changeType4.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/changeType4.yml new file mode 100644 index 0000000000..0cd08281b8 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/changeType4.yml @@ -0,0 +1,33 @@ +languageId: java +command: + version: 6 + spokenForm: change type + action: + name: clearAndSetSelection + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: type} + usePrePhraseSnapshot: true +initialState: + documentContents: |- + public class MyClass { + private MyClass (String hello) { + int[] values = new int[5]; + } + } + selections: + - anchor: {line: 2, character: 27} + active: {line: 2, character: 27} + marks: {} +finalState: + documentContents: |- + public class MyClass { + private MyClass (String hello) { + int[] values = new [5]; + } + } + selections: + - anchor: {line: 2, character: 27} + active: {line: 2, character: 27} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/changeType5.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/changeType5.yml new file mode 100644 index 0000000000..97a06ede7e --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/changeType5.yml @@ -0,0 +1,33 @@ +languageId: java +command: + version: 6 + spokenForm: change type + action: + name: clearAndSetSelection + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: type} + usePrePhraseSnapshot: true +initialState: + documentContents: |- + public class MyClass { + public void myFunk() { + + } + } + selections: + - anchor: {line: 2, character: 8} + active: {line: 2, character: 8} + marks: {} +finalState: + documentContents: |- + public class MyClass { + public myFunk() { + + } + } + selections: + - anchor: {line: 1, character: 11} + active: {line: 1, character: 11} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/takeTypeGust.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/clearTypeGust.yml similarity index 81% rename from packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/takeTypeGust.yml rename to packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/clearTypeGust.yml index 57df12173a..c71d6982fc 100644 --- a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/takeTypeGust.yml +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/clearTypeGust.yml @@ -1,8 +1,8 @@ languageId: java command: version: 1 - spokenForm: take type gust - action: setSelection + spokenForm: change type gust + action: clearAndSetSelection targets: - type: primitive modifier: {type: containingScope, scopeType: type, includeSiblings: false} @@ -27,9 +27,9 @@ finalState: public class MyClass { private MyClass () { Map map = new HashMap(); - List list = new ArrayList(); + List<> list = new ArrayList(); } } selections: - - anchor: {line: 3, character: 8} - active: {line: 3, character: 20} + - anchor: {line: 3, character: 13} + active: {line: 3, character: 13} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/takeTypeGust2.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/clearTypeGust2.yml similarity index 81% rename from packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/takeTypeGust2.yml rename to packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/clearTypeGust2.yml index 182e3de0e3..ffe75dfd7f 100644 --- a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/takeTypeGust2.yml +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/clearTypeGust2.yml @@ -1,8 +1,8 @@ languageId: java command: version: 1 - spokenForm: take type gust - action: setSelection + spokenForm: change type gust + action: clearAndSetSelection targets: - type: primitive modifier: {type: containingScope, scopeType: type, includeSiblings: false} @@ -27,9 +27,9 @@ finalState: public class MyClass { private MyClass () { Map map = new HashMap(); - List list = new ArrayList(); + List list = new ArrayList<>(); } } selections: - - anchor: {line: 3, character: 32} - active: {line: 3, character: 49} + - anchor: {line: 3, character: 42} + active: {line: 3, character: 42} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/takeTypeSoon.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/clearTypeSoon.yml similarity index 80% rename from packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/takeTypeSoon.yml rename to packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/clearTypeSoon.yml index 776acf1faa..418f981c17 100644 --- a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/takeTypeSoon.yml +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/clearTypeSoon.yml @@ -1,8 +1,8 @@ languageId: java command: version: 1 - spokenForm: take type sun - action: setSelection + spokenForm: change type sun + action: clearAndSetSelection targets: - type: primitive modifier: {type: containingScope, scopeType: type, includeSiblings: false} @@ -26,10 +26,10 @@ finalState: documentContents: |- public class MyClass { private MyClass () { - Map map = new HashMap(); + Map<, String> map = new HashMap(); List list = new ArrayList(); } } selections: - - anchor: {line: 2, character: 8} - active: {line: 2, character: 27} + - anchor: {line: 2, character: 12} + active: {line: 2, character: 12} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/takeTypeSoon2.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/clearTypeSoon2.yml similarity index 80% rename from packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/takeTypeSoon2.yml rename to packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/clearTypeSoon2.yml index 8cfcb12d16..700e7fe436 100644 --- a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/takeTypeSoon2.yml +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/clearTypeSoon2.yml @@ -1,8 +1,8 @@ languageId: java command: version: 1 - spokenForm: take type sun - action: setSelection + spokenForm: change type sun + action: clearAndSetSelection targets: - type: primitive modifier: {type: containingScope, scopeType: type, includeSiblings: false} @@ -26,10 +26,10 @@ finalState: documentContents: |- public class MyClass { private MyClass () { - Map map = new HashMap(); + Map map = new HashMap(); List list = new ArrayList(); } } selections: - - anchor: {line: 2, character: 38} - active: {line: 2, character: 61} + - anchor: {line: 2, character: 54} + active: {line: 2, character: 54} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/takeTypeTrap.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/clearTypeTrap.yml similarity index 80% rename from packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/takeTypeTrap.yml rename to packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/clearTypeTrap.yml index f212a2ae55..4e6721dfd3 100644 --- a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/takeTypeTrap.yml +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/clearTypeTrap.yml @@ -1,8 +1,8 @@ languageId: java command: version: 1 - spokenForm: take type trap - action: setSelection + spokenForm: change type trap + action: clearAndSetSelection targets: - type: primitive modifier: {type: containingScope, scopeType: type, includeSiblings: false} @@ -26,10 +26,10 @@ finalState: documentContents: |- public class MyClass { private MyClass () { - Map map = new HashMap(); + Map map = new HashMap(); List list = new ArrayList(); } } selections: - - anchor: {line: 2, character: 8} - active: {line: 2, character: 27} + - anchor: {line: 2, character: 20} + active: {line: 2, character: 20} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/takeTypeTrap2.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/clearTypeTrap2.yml similarity index 80% rename from packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/takeTypeTrap2.yml rename to packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/clearTypeTrap2.yml index 8beaf7e7db..343fb97c5a 100644 --- a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/takeTypeTrap2.yml +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/clearTypeTrap2.yml @@ -1,8 +1,8 @@ languageId: java command: version: 1 - spokenForm: take type trap - action: setSelection + spokenForm: change type trap + action: clearAndSetSelection targets: - type: primitive modifier: {type: containingScope, scopeType: type, includeSiblings: false} @@ -26,10 +26,10 @@ finalState: documentContents: |- public class MyClass { private MyClass () { - Map map = new HashMap(); + Map map = new HashMap<, String>(); List list = new ArrayList(); } } selections: - - anchor: {line: 2, character: 38} - active: {line: 2, character: 61} + - anchor: {line: 2, character: 46} + active: {line: 2, character: 46} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/takeType4.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/takeType4.yml new file mode 100644 index 0000000000..4a2abc6233 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/java/takeType4.yml @@ -0,0 +1,33 @@ +languageId: java +command: + version: 6 + spokenForm: take type + action: + name: setSelection + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: type} + usePrePhraseSnapshot: true +initialState: + documentContents: |- + public class MyClass { + public void myFunk(int value) { + + } + } + selections: + - anchor: {line: 1, character: 30} + active: {line: 1, character: 30} + marks: {} +finalState: + documentContents: |- + public class MyClass { + public void myFunk(int value) { + + } + } + selections: + - anchor: {line: 1, character: 23} + active: {line: 1, character: 26} diff --git a/queries/java.scm b/queries/java.scm index a168435976..13cb02629a 100644 --- a/queries/java.scm +++ b/queries/java.scm @@ -203,3 +203,44 @@ (assignment_expression left: (_) @name ) @_.domain + +;;!! Map +;;! ^^^^^^^ ^^^^^^ +(type_arguments + (type_identifier) @type +) + +;;!! List list = value; +;;! ^^^^^^^^^^^^ +;;! -------------------------- +(local_variable_declaration + type: (_) @type +) @_.domain + +;;!! name = new ArrayList(); +;;! ^^^^^^^^^^^^^^^^^ +;;! ----------------------- +(object_creation_expression + type: (_) @type +) @_.domain + +;;!! name = new int[5]; +;;! ^^^ +;;! ---------- +(array_creation_expression + type: (_) @type +) @_.domain + +;;!! void myFunk(int value) {} +;;! ^^^ +;;! --------- +(formal_parameter + type: (_) @type +) @_.domain + +;;!! int size() {} +;;! ^^^ +;;! ------------- +(method_declaration + type: (_) @type +) @_.domain