Surface warnings to frontend and LSP (#4603)
* Send multiple errors and warnings to the frontend and LSP Signed-off-by: Nick Cameron <nrc@ncameron.org> * Refactor the parser to use CompilationError for parsing errors rather than KclError Signed-off-by: Nick Cameron <nrc@ncameron.org> * Refactoring: move CompilationError, etc. Signed-off-by: Nick Cameron <nrc@ncameron.org> * Integrate compilation errors with the frontend and CodeMirror Signed-off-by: Nick Cameron <nrc@ncameron.org> * Fix tests Signed-off-by: Nick Cameron <nrc@ncameron.org> * Review comments Signed-off-by: Nick Cameron <nrc@ncameron.org> * Fix module id/source range stuff Signed-off-by: Nick Cameron <nrc@ncameron.org> * More test fixups Signed-off-by: Nick Cameron <nrc@ncameron.org> --------- Signed-off-by: Nick Cameron <nrc@ncameron.org>
This commit is contained in:
@ -1,5 +1,5 @@
|
||||
import { getNodePathFromSourceRange, getNodeFromPath } from './queryAst'
|
||||
import { Identifier, parse, initPromise, Parameter } from './wasm'
|
||||
import { Identifier, assertParse, initPromise, Parameter } from './wasm'
|
||||
import { err } from 'lib/trap'
|
||||
|
||||
beforeAll(async () => {
|
||||
@ -17,19 +17,19 @@ const sk3 = startSketchAt([0, 0])
|
||||
`
|
||||
const subStr = 'lineTo([3, 4], %, $yo)'
|
||||
const lineToSubstringIndex = code.indexOf(subStr)
|
||||
const sourceRange: [number, number] = [
|
||||
const sourceRange: [number, number, boolean] = [
|
||||
lineToSubstringIndex,
|
||||
lineToSubstringIndex + subStr.length,
|
||||
true,
|
||||
]
|
||||
|
||||
const ast = parse(code)
|
||||
if (err(ast)) throw ast
|
||||
const ast = assertParse(code)
|
||||
const nodePath = getNodePathFromSourceRange(ast, sourceRange)
|
||||
const _node = getNodeFromPath<any>(ast, nodePath)
|
||||
if (err(_node)) throw _node
|
||||
const { node } = _node
|
||||
|
||||
expect([node.start, node.end]).toEqual(sourceRange)
|
||||
expect([node.start, node.end, true]).toEqual(sourceRange)
|
||||
expect(node.type).toBe('CallExpression')
|
||||
})
|
||||
it('gets path right for function definition params', () => {
|
||||
@ -45,13 +45,13 @@ const sk3 = startSketchAt([0, 0])
|
||||
const b1 = cube([0,0], 10)`
|
||||
const subStr = 'pos, scale'
|
||||
const subStrIndex = code.indexOf(subStr)
|
||||
const sourceRange: [number, number] = [
|
||||
const sourceRange: [number, number, boolean] = [
|
||||
subStrIndex,
|
||||
subStrIndex + 'pos'.length,
|
||||
true,
|
||||
]
|
||||
|
||||
const ast = parse(code)
|
||||
if (err(ast)) throw ast
|
||||
const ast = assertParse(code)
|
||||
const nodePath = getNodePathFromSourceRange(ast, sourceRange)
|
||||
const _node = getNodeFromPath<Parameter>(ast, nodePath)
|
||||
if (err(_node)) throw _node
|
||||
@ -82,13 +82,13 @@ const b1 = cube([0,0], 10)`
|
||||
const b1 = cube([0,0], 10)`
|
||||
const subStr = 'scale, 0'
|
||||
const subStrIndex = code.indexOf(subStr)
|
||||
const sourceRange: [number, number] = [
|
||||
const sourceRange: [number, number, boolean] = [
|
||||
subStrIndex,
|
||||
subStrIndex + 'scale'.length,
|
||||
true,
|
||||
]
|
||||
|
||||
const ast = parse(code)
|
||||
if (err(ast)) throw ast
|
||||
const ast = assertParse(code)
|
||||
const nodePath = getNodePathFromSourceRange(ast, sourceRange)
|
||||
const _node = getNodeFromPath<Identifier>(ast, nodePath)
|
||||
if (err(_node)) throw _node
|
||||
|
Reference in New Issue
Block a user