Skip to content

Commit 4dd6ae9

Browse files
gselzerclaude
andcommitted
Name what the declarations import, so it is not completed
E.g. a package imported only to declare a parameter's type is no longer offered (see ScriptDialect#imported). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 parent 8a9ac66 commit 4dd6ae9

3 files changed

Lines changed: 10 additions & 0 deletions

File tree

‎src/main/java/org/scijava/plugins/scripting/jython/JythonDialect.java‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,13 @@ public List<String> imports(final Collection<String> types) {
7878
return imports;
7979
}
8080

81+
@Override
82+
public String imported(final String statement) {
83+
// NB: "import a.b" binds a.
84+
return statement.startsWith("import ") ? statement.substring(7).split(
85+
"[.\\s]")[0] : null;
86+
}
87+
8188
/**
8289
* The packages or modules of the given types that a declaration refers to
8390
* (none for builtins, e.g. {@code str}).

‎src/test/java/org/scijava/plugins/scripting/jython/JythonCompletionTest.java‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,8 @@ public void testScriptParameters() {
150150
assertTrue(complete(header + "greeting.st").contains("greeting.strip"));
151151
// Numbers are int, not java.lang.Integer.
152152
assertFalse(complete(header + "count.intV").contains("count.intValue"));
153+
// Packages imported only to declare those are not completed.
154+
assertFalse(complete(header + "j").contains("java.lang"));
153155
}
154156

155157
@Test

‎src/test/java/org/scijava/plugins/scripting/jython/JythonServerCompletionTest.java‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ public void testDeclarations() {
135135
assertEquals(Arrays.asList("import array", "import java.util",
136136
"import net.imglib2.img"), dialect.imports(Arrays.asList(
137137
"net.imglib2.img.Img", "str", "java.util.Map$Entry", "array.array")));
138+
assertEquals("net", dialect.imported("import net.imglib2.img"));
138139
assertTrue(JythonServerPlugin.isJython(jython));
139140
}
140141
}

0 commit comments

Comments
 (0)