diff --git a/.vscode/settings.json b/.vscode/settings.json index 1c6f226ee..184fb50f4 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -10,5 +10,6 @@ //Use consistent indentation "editor.detectIndentation": false, "editor.tabSize": 4, - "editor.insertSpaces": false + "editor.insertSpaces": false, + "java.compile.nullAnalysis.mode": "automatic", } \ No newline at end of file diff --git a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/contentmodel/participants/ContentModelCodeLensParticipant.java b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/contentmodel/participants/ContentModelCodeLensParticipant.java index f25bce0c6..f404a6e19 100644 --- a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/contentmodel/participants/ContentModelCodeLensParticipant.java +++ b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/contentmodel/participants/ContentModelCodeLensParticipant.java @@ -33,6 +33,7 @@ import org.eclipse.lemminx.utils.XMLPositionUtility; import org.eclipse.lsp4j.CodeLens; import org.eclipse.lsp4j.Command; +import org.eclipse.lsp4j.Position; import org.eclipse.lsp4j.Range; import org.eclipse.lsp4j.TextDocumentEdit; import org.eclipse.lsp4j.jsonrpc.CancelChecker; @@ -91,7 +92,14 @@ private void createReferencedGrammarLenses(ICodeLensRequest request, List referencedGrammarInfos = contentModelManager.getReferencedGrammarInfos(document); for (ReferencedGrammarInfo info : referencedGrammarInfos) { diff --git a/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/AssociateGrammarCodeLensExtensionsTest.java b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/AssociateGrammarCodeLensExtensionsTest.java index bf7368357..3b5bc8acb 100644 --- a/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/AssociateGrammarCodeLensExtensionsTest.java +++ b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/AssociateGrammarCodeLensExtensionsTest.java @@ -168,6 +168,30 @@ public void referencedGrammarUsingFileAssociation() throws BadLocationException cl(r(0, 0, 0, 0), " (with file association)", OPEN_URI)); } + @Test + public void referencedGrammarUsingFileAssociationEmptyDocument() throws BadLocationException { + Consumer configuration = ls -> { + ContentModelManager contentModelManager = ls.getComponent(ContentModelManager.class); + // Use root URI which ends with slash + contentModelManager.setRootURI("src/test/resources/xsd/"); + contentModelManager.setFileAssociations(createXSDAssociationsNoNamespaceSchemaLocationLike("")); + }; + + String xml = ""; + + testCodeLensFor(xml, "file:///test/resources.xml", new XMLLanguageService(), // + Collections.singletonList(CodeLensKind.OpenUri), // + configuration, // + cl(r(0, 0, 0, 0), " (with file association)", OPEN_URI)); + + xml = ""; + + testCodeLensFor(xml, "file:///test/resources.xml", new XMLLanguageService(), // + Collections.singletonList(CodeLensKind.OpenUri), // + configuration, // + cl(r(0, 0, 0, 0), " (with file association)", OPEN_URI)); + } + private static XMLFileAssociation[] createXSDAssociationsNoNamespaceSchemaLocationLike(String baseSystemId) { XMLFileAssociation resources = new XMLFileAssociation(); resources.setPattern("**/*resources*.xml");