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 using \r\n with an embedded comment with a quote causes semantic tokens calculation to enter an infinite loop #113

Closed rcjsuen closed 1 year ago

rcjsuen commented 1 year ago

This is the \r\n version of #110.

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" &\\\r\n# a'b\r\necho "test2"`);
console.log(tokens);
../dockerfile-language-server-nodejs/node_modules/dockerfile-language-service/lib/dockerSemanticTokens.js:579
                var intermediateRange = {
                                        ^

RangeError: Maximum call stack size exceeded
    at DockerSemanticTokens.createToken (../dockerfile-language-server-nodejs/node_modules/dockerfile-language-service/lib/dockerSemanticTokens.js:579:41)
    at DockerSemanticTokens.createToken (../dockerfile-language-server-nodejs/node_modules/dockerfile-language-service/lib/dockerSemanticTokens.js:583:22)
    at DockerSemanticTokens.createToken (../dockerfile-language-server-nodejs/node_modules/dockerfile-language-service/lib/dockerSemanticTokens.js:583:22)
    at DockerSemanticTokens.createToken (../dockerfile-language-server-nodejs/node_modules/dockerfile-language-service/lib/dockerSemanticTokens.js:583:22)
    at DockerSemanticTokens.createToken (../dockerfile-language-server-nodejs/node_modules/dockerfile-language-service/lib/dockerSemanticTokens.js:583:22)
    at DockerSemanticTokens.createToken (../dockerfile-language-server-nodejs/node_modules/dockerfile-language-service/lib/dockerSemanticTokens.js:583:22)
    at DockerSemanticTokens.createToken (../dockerfile-language-server-nodejs/node_modules/dockerfile-language-service/lib/dockerSemanticTokens.js:583:22)
    at DockerSemanticTokens.createToken (../dockerfile-language-server-nodejs/node_modules/dockerfile-language-service/lib/dockerSemanticTokens.js:583:22)
    at DockerSemanticTokens.createToken (../dockerfile-language-server-nodejs/node_modules/dockerfile-language-service/lib/dockerSemanticTokens.js:583:22)
    at DockerSemanticTokens.createToken (../dockerfile-language-server-nodejs/node_modules/dockerfile-language-service/lib/dockerSemanticTokens.js:583:22)