rcjsuen / dockerfile-language-service

Dockerfile language service for providing an API to create feature-rich Dockerfile editors in JavaScript.
MIT License
16 stars 2 forks source link

Multiline argument with an embedded comment with a quote causes semantic tokens calculation to enter an infinite loop #110

Closed rcjsuen closed 1 year ago

rcjsuen commented 1 year ago
RUN echo "test" &\
# a'b
echo "test2"
const lib = require("dockerfile-language-service");
const service = lib.DockerfileLanguageServiceFactory.createLanguageService();
const tokens = service.computeSemanticTokens(`RUN echo "test" &\\\n# a'b\necho "test2"`);
console.log(tokens);
../dockerfile-language-service/lib/dockerSemanticTokens.js:535
                var intermediateRange = {
                                        ^

RangeError: Maximum call stack size exceeded
    at DockerSemanticTokens.createToken (../dockerfile-language-service/lib/dockerSemanticTokens.js:535:41)
    at DockerSemanticTokens.createToken (../dockerfile-language-service/lib/dockerSemanticTokens.js:539:22)
    at DockerSemanticTokens.createToken (../dockerfile-language-service/lib/dockerSemanticTokens.js:539:22)
    at DockerSemanticTokens.createToken (../dockerfile-language-service/lib/dockerSemanticTokens.js:539:22)
    at DockerSemanticTokens.createToken (../dockerfile-language-service/lib/dockerSemanticTokens.js:539:22)
    at DockerSemanticTokens.createToken (../dockerfile-language-service/lib/dockerSemanticTokens.js:539:22)
    at DockerSemanticTokens.createToken (../dockerfile-language-service/lib/dockerSemanticTokens.js:539:22)
    at DockerSemanticTokens.createToken (../dockerfile-language-service/lib/dockerSemanticTokens.js:539:22)
    at DockerSemanticTokens.createToken (../dockerfile-language-service/lib/dockerSemanticTokens.js:539:22)
    at DockerSemanticTokens.createToken (../dockerfile-language-service/lib/dockerSemanticTokens.js:539:22)