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

Semantic tokens calculation goes in an infinite loop if escape character on an instruction has non-newline whitespace after it #95

Closed rcjsuen closed 2 years ago

rcjsuen commented 2 years ago
const lib = require("dockerfile-language-service");
const service = lib.DockerfileLanguageServiceFactory.createLanguageService();
service.computeSemanticTokens("R\\ \n\n");
Uncaught RangeError: Maximum call stack size exceeded
    at u.getRawArguments (bundle.js:1)
    at u.getVariables (bundle.js:1)
    at e.createToken (bundle.js:1)
    at e.createToken (bundle.js:1)
    at e.createToken (bundle.js:1)
    at e.createToken (bundle.js:1)
    at e.createToken (bundle.js:1)
    at e.createToken (bundle.js:1)
    at e.createToken (bundle.js:1)
    at e.createToken (bundle.js:1)

It seems like the single character is the issue as the below JavaScript code does not enter an infinite loop.

const lib = require("dockerfile-language-service");
const service = lib.DockerfileLanguageServiceFactory.createLanguageService();
service.computeSemanticTokens("RU\\ \n\n");