Skip to content

Commit cb6110a

Browse files
committed
Add isEmbeddedSchema flag to SchemaNode to fix findNodeAtOffset
1 parent a675fc6 commit cb6110a

File tree

3 files changed

+6
-2
lines changed

3 files changed

+6
-2
lines changed

language-server/src/features/completion/if-then-completion.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ describe("Feature - if/then completion", () => {
7474

7575
test("if/then completion on property value", async () => {
7676
await client.writeDocument("subject.schema.json", `{
77-
"if": ""
77+
"if": {}
7878
}`);
7979
documentUri = await client.openDocument("subject.schema.json");
8080

language-server/src/model/schema-document.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,8 @@ const fromJsonc = (node, uri, pointer, dialectUri, parent, schemaLocations = new
164164
childSchemaNode.keywordUri = propertyKeywordUri;
165165
if (childSchemaNode.pointer !== "") {
166166
schemaNode.children.push(childSchemaNode);
167+
} else {
168+
schemaNode.isEmbeddedSchema = true;
167169
}
168170
}
169171
break;
@@ -182,7 +184,7 @@ const isValueNode = (node) => {
182184
export const findNodeAtOffset = (document, offset) => {
183185
for (const schemaResource of document.schemaResources) {
184186
const node = _findNodeAtOffset(schemaResource, offset);
185-
if (node) {
187+
if (node && !node.isEmbeddedSchema) {
186188
return node;
187189
}
188190
}

language-server/src/model/schema-node.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import { normalizeUri } from "../util/util.js";
2323
* dialectUri?: string;
2424
* anchors: Record<string, string>;
2525
* isSchema: boolean;
26+
* isEmbeddedSchema: boolean;
2627
* keywordUri: string | undefined;
2728
* embedded: Record<string, SchemaNode>;
2829
* }} SchemaNode
@@ -46,6 +47,7 @@ export const cons = (uri, pointer, value, type, parent, offset, textLength, dial
4647
node.dialectUri = dialectUri;
4748
node.anchors = parent?.anchors ?? {};
4849
node.embedded = parent?.embedded ?? {};
50+
node.isEmbeddedSchema = false;
4951

5052
if (node.baseUri !== parent?.baseUri) {
5153
node.embedded[uri] = node;

0 commit comments

Comments
 (0)