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

Infinite loop in semantic tokens if strings before and after escaped newlines in a multiline instruction with an embedded comment #116

Closed rcjsuen closed 1 year ago

rcjsuen commented 1 year ago
RUN a''\
#
''
const lib = require("dockerfile-language-service");
const service = lib.DockerfileLanguageServiceFactory.createLanguageService();
service.computeSemanticTokens(`RUN a''\\\r\n#\r\n''`);
../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)