dont run inf loop check on ns1 scripts

This commit is contained in:
Olivier Gagnon 2021-10-29 01:23:15 -04:00
parent 2926ee0fc0
commit d99d3fc222
4 changed files with 33 additions and 28 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -234,7 +234,6 @@ export function checkInfiniteLoop(code: string): number {
{ {
WhileStatement: (node: acorn.Node, st: any, walkDeeper: walk.WalkerCallback<any>) => { WhileStatement: (node: acorn.Node, st: any, walkDeeper: walk.WalkerCallback<any>) => {
if (nodeHasTrueTest((node as any).test) && !hasAwait(node)) { if (nodeHasTrueTest((node as any).test) && !hasAwait(node)) {
console.log(node);
missingAwaitLine = (code.slice(0, node.start).match(/\n/g) || []).length + 1; missingAwaitLine = (code.slice(0, node.start).match(/\n/g) || []).length + 1;
} else { } else {
(node as any).body && walkDeeper((node as any).body, st); (node as any).body && walkDeeper((node as any).body, st);

@ -227,35 +227,41 @@ export function Root(props: IProps): React.ReactElement {
setFilename(event.target.value); setFilename(event.target.value);
} }
function infLoop(newCode: string): void {
if (editorRef.current === null) return;
if (!filename.endsWith(".ns") && !filename.endsWith(".js")) return;
const awaitWarning = checkInfiniteLoop(newCode);
if (awaitWarning !== -1) {
const newDecorations = editorRef.current.deltaDecorations(decorations, [
{
range: {
startLineNumber: awaitWarning,
startColumn: 1,
endLineNumber: awaitWarning,
endColumn: 10,
},
options: {
isWholeLine: true,
glyphMarginClassName: "myGlyphMarginClass",
glyphMarginHoverMessage: {
value: "Possible infinite loop, await something.",
},
},
},
]);
setDecorations(newDecorations);
} else {
const newDecorations = editorRef.current.deltaDecorations(decorations, []);
setDecorations(newDecorations);
}
}
function updateCode(newCode?: string): void { function updateCode(newCode?: string): void {
if (newCode === undefined) return; if (newCode === undefined) return;
lastCode = newCode; lastCode = newCode;
if (editorRef.current !== null) { if (editorRef.current !== null) {
lastPosition = editorRef.current.getPosition(); lastPosition = editorRef.current.getPosition();
const awaitWarning = checkInfiniteLoop(newCode); infLoop(newCode);
if (awaitWarning !== -1) {
const newDecorations = editorRef.current.deltaDecorations(decorations, [
{
range: {
startLineNumber: awaitWarning,
startColumn: 1,
endLineNumber: awaitWarning,
endColumn: 10,
},
options: {
isWholeLine: true,
glyphMarginClassName: "myGlyphMarginClass",
glyphMarginHoverMessage: {
value: "Possible infinite loop, await something.",
},
},
},
]);
setDecorations(newDecorations);
} else {
const newDecorations = editorRef.current.deltaDecorations(decorations, []);
setDecorations(newDecorations);
}
} }
setCode(newCode); setCode(newCode);
updateRAM(newCode); updateRAM(newCode);