diff --git a/languageservice/src/expression-validation/visitor.test.ts b/languageservice/src/expression-validation/visitor.test.ts index abd0bf3..777de62 100644 --- a/languageservice/src/expression-validation/visitor.test.ts +++ b/languageservice/src/expression-validation/visitor.test.ts @@ -56,6 +56,25 @@ describe("validation visitor", () => { ]); }); + it("invalid context access as index", () => { + expect(useVisitor("github[github.foo]", ["github"])).toEqual([ + { + message: "Context access might be invalid: foo", + range: { + end: { + column: 17, + line: 0 + }, + start: { + column: 7, + line: 0 + } + }, + severity: "warning" + } + ]); + }); + it("invalid nested context access", () => { expect(useVisitor("github.repo.name", ["github"])).toEqual([ { diff --git a/languageservice/src/expression-validation/visitor.ts b/languageservice/src/expression-validation/visitor.ts index d062296..36859f2 100644 --- a/languageservice/src/expression-validation/visitor.ts +++ b/languageservice/src/expression-validation/visitor.ts @@ -1,4 +1,4 @@ -import {DescriptionDictionary} from "@actions/expressions/."; +import {DescriptionDictionary} from "@actions/expressions"; import { Binary, ContextAccess, @@ -76,7 +76,8 @@ export class ValidationVisitor implements ExprVisitor { while (i) { if (i instanceof IndexAccess) { if (!(i.index instanceof Literal)) { - // Cannot validate + // Not a literal, validate independently + this._validate(i.index); return; } s.push(i.index.literal);