mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[java] new keyword completion in module-info files (IDEA-164119)
This commit is contained in:
@@ -71,7 +71,12 @@ class JavaModuleCompletion {
|
||||
}
|
||||
|
||||
private static void addFileHeaderKeywords(PsiElement position, Consumer<LookupElement> result) {
|
||||
if (PsiTreeUtil.prevVisibleLeaf(position) == null) {
|
||||
PsiElement prev = PsiTreeUtil.prevVisibleLeaf(position);
|
||||
if (prev == null) {
|
||||
result.consume(new OverrideableSpace(createKeyword(position, PsiKeyword.MODULE), TailType.HUMBLE_SPACE_BEFORE_WORD));
|
||||
result.consume(new OverrideableSpace(createKeyword(position, PsiKeyword.OPEN), TailType.HUMBLE_SPACE_BEFORE_WORD));
|
||||
}
|
||||
else if (PsiUtil.isJavaToken(prev, JavaTokenType.OPEN_KEYWORD)) {
|
||||
result.consume(new OverrideableSpace(createKeyword(position, PsiKeyword.MODULE), TailType.HUMBLE_SPACE_BEFORE_WORD));
|
||||
}
|
||||
}
|
||||
@@ -79,6 +84,7 @@ class JavaModuleCompletion {
|
||||
private static void addModuleStatementKeywords(PsiElement position, Consumer<LookupElement> result) {
|
||||
result.consume(new OverrideableSpace(createKeyword(position, PsiKeyword.REQUIRES), TailType.HUMBLE_SPACE_BEFORE_WORD));
|
||||
result.consume(new OverrideableSpace(createKeyword(position, PsiKeyword.EXPORTS), TailType.HUMBLE_SPACE_BEFORE_WORD));
|
||||
result.consume(new OverrideableSpace(createKeyword(position, PsiKeyword.OPENS), TailType.HUMBLE_SPACE_BEFORE_WORD));
|
||||
result.consume(new OverrideableSpace(createKeyword(position, PsiKeyword.USES), TailType.HUMBLE_SPACE_BEFORE_WORD));
|
||||
result.consume(new OverrideableSpace(createKeyword(position, PsiKeyword.PROVIDES), TailType.HUMBLE_SPACE_BEFORE_WORD));
|
||||
}
|
||||
@@ -89,6 +95,10 @@ class JavaModuleCompletion {
|
||||
|
||||
private static void addModuleReferences(PsiElement context, Consumer<LookupElement> result) {
|
||||
PsiElement statement = context.getParent();
|
||||
if (statement instanceof PsiRequiresStatement) {
|
||||
result.consume(new OverrideableSpace(createKeyword(context, PsiKeyword.TRANSITIVE), TailType.HUMBLE_SPACE_BEFORE_WORD));
|
||||
result.consume(new OverrideableSpace(createKeyword(context, PsiKeyword.STATIC), TailType.HUMBLE_SPACE_BEFORE_WORD));
|
||||
}
|
||||
if (!(statement instanceof PsiJavaModule)) {
|
||||
PsiElement host = statement.getParent();
|
||||
if (host instanceof PsiJavaModule) {
|
||||
|
||||
+10
-4
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2016 JetBrains s.r.o.
|
||||
* Copyright 2000-2017 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -25,11 +25,17 @@ class ModuleCompletionTest : LightJava9ModulesCodeInsightFixtureTestCase() {
|
||||
addFile("module-info.java", "module M2 { }", M2)
|
||||
}
|
||||
|
||||
fun testFileHeader() = complete("<caret>", "module <caret>")
|
||||
fun testFileHeader1() = variants("<caret>", "module", "open")
|
||||
fun testFileHeader2() = complete("open <caret>", "open module <caret>")
|
||||
fun testModuleName() = variants("module M<caret>")
|
||||
fun testStatements1() = variants("module M { <caret> }", "requires", "exports", "uses", "provides")
|
||||
fun testStatements1() = variants("module M { <caret> }", "requires", "exports", "opens", "uses", "provides")
|
||||
fun testStatements2() = complete("module M { requires X; ex<caret> }", "module M { requires X; exports <caret> }")
|
||||
fun testModuleRef() = complete("module M { requires M<caret> }", "module M { requires M2;<caret> }")
|
||||
|
||||
fun testRequires() {
|
||||
variants("module M { requires <caret>", "transitive", "static", "M2", "java.base", "lib.multi.release", "lib.named")
|
||||
complete("module M { requires t<caret> }", "module M { requires transitive <caret> }")
|
||||
complete("module M { requires M<caret> }", "module M { requires M2;<caret> }")
|
||||
}
|
||||
|
||||
fun testExports() {
|
||||
addFile("pkg/empty/package-info.java", "package pkg.empty;")
|
||||
|
||||
Reference in New Issue
Block a user