Fix the 'constrain length' test
This commit is contained in:
committed by
Nick Cameron
parent
09df8a734a
commit
8bac097743
@ -57,7 +57,7 @@ test.describe('Testing constraints', () => {
|
|||||||
.click()
|
.click()
|
||||||
|
|
||||||
await expect(page.locator('.cm-content')).toHaveText(
|
await expect(page.locator('.cm-content')).toHaveText(
|
||||||
`length001 = 20sketch001 = startSketchOn('XY') |> startProfileAt([-10, -10], %) |> line(end = [20, 0], %) |> angledLine([90, length001], %) |> xLine(-20)`
|
`length001 = 20sketch001 = startSketchOn('XY') |> startProfileAt([-10, -10], %) |> line(end = [20, 0]) |> angledLine([90, length001], %) |> xLine(-20, %)`
|
||||||
)
|
)
|
||||||
|
|
||||||
// Make sure we didn't pop out of sketch mode.
|
// Make sure we didn't pop out of sketch mode.
|
||||||
|
@ -39,7 +39,7 @@ export function angleLengthInfo({
|
|||||||
}
|
}
|
||||||
| Error {
|
| Error {
|
||||||
const nodes = selectionRanges.graphSelections.map(({ codeRef }) =>
|
const nodes = selectionRanges.graphSelections.map(({ codeRef }) =>
|
||||||
getNodeFromPath<Expr>(kclManager.ast, codeRef.pathToNode, 'CallExpression')
|
getNodeFromPath<Expr>(kclManager.ast, codeRef.pathToNode, ['CallExpression', 'CallExpressionKw'])
|
||||||
)
|
)
|
||||||
const _err1 = nodes.find(err)
|
const _err1 = nodes.find(err)
|
||||||
if (_err1 instanceof Error) return _err1
|
if (_err1 instanceof Error) return _err1
|
||||||
@ -47,7 +47,7 @@ export function angleLengthInfo({
|
|||||||
const isAllTooltips = nodes.every((meta) => {
|
const isAllTooltips = nodes.every((meta) => {
|
||||||
if (err(meta)) return false
|
if (err(meta)) return false
|
||||||
return (
|
return (
|
||||||
meta.node?.type === 'CallExpression' &&
|
(meta.node?.type === 'CallExpressionKw' || meta.node?.type === 'CallExpression') &&
|
||||||
toolTips.includes(meta.node.callee.name as any)
|
toolTips.includes(meta.node.callee.name as any)
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
@ -12,8 +12,11 @@ import {
|
|||||||
Expr,
|
Expr,
|
||||||
topLevelRange,
|
topLevelRange,
|
||||||
LabeledArg,
|
LabeledArg,
|
||||||
|
CallExpressionKw,
|
||||||
} from '../wasm'
|
} from '../wasm'
|
||||||
import { err } from 'lib/trap'
|
import { err } from 'lib/trap'
|
||||||
|
import { findKwArgAny } from 'lang/util'
|
||||||
|
import { ARG_END, ARG_END_ABSOLUTE } from './sketch'
|
||||||
|
|
||||||
export function getSketchSegmentFromPathToNode(
|
export function getSketchSegmentFromPathToNode(
|
||||||
sketch: Sketch,
|
sketch: Sketch,
|
||||||
@ -107,18 +110,33 @@ export function isSketchVariablesLinked(
|
|||||||
const { init } = secondaryVarDec
|
const { init } = secondaryVarDec
|
||||||
if (
|
if (
|
||||||
!init ||
|
!init ||
|
||||||
!(init.type === 'CallExpression' || init.type === 'PipeExpression')
|
!(
|
||||||
|
init.type === 'CallExpression' ||
|
||||||
|
init.type === 'CallExpressionKw' ||
|
||||||
|
init.type === 'PipeExpression'
|
||||||
|
)
|
||||||
)
|
)
|
||||||
return false
|
return false
|
||||||
const firstCallExp = // first in pipe expression or just the call expression
|
const firstCallExp = // first in pipe expression or just the call expression
|
||||||
init?.type === 'CallExpression' ? init : (init?.body[0] as CallExpression)
|
init?.type === 'PipeExpression'
|
||||||
|
? (init?.body[0] as CallExpression | CallExpressionKw)
|
||||||
|
: init
|
||||||
if (
|
if (
|
||||||
!firstCallExp ||
|
!firstCallExp ||
|
||||||
!toolTips.includes(firstCallExp?.callee?.name as ToolTip)
|
!toolTips.includes(firstCallExp?.callee?.name as ToolTip)
|
||||||
)
|
)
|
||||||
return false
|
return false
|
||||||
// convention for sketch fns is that the second argument is the sketch
|
// convention for sketch fns is that the second argument is the sketch
|
||||||
const secondArg = firstCallExp?.arguments[1]
|
// This is not the convention for kw arg calls, so, TODO at some point,
|
||||||
|
// rename this var.
|
||||||
|
const secondArg = (() => {
|
||||||
|
switch (firstCallExp.type) {
|
||||||
|
case 'CallExpression':
|
||||||
|
return firstCallExp?.arguments[1]
|
||||||
|
case 'CallExpressionKw':
|
||||||
|
return findKwArgAny([ARG_END, ARG_END_ABSOLUTE], firstCallExp)
|
||||||
|
}
|
||||||
|
})()
|
||||||
if (!secondArg || secondArg?.type !== 'Identifier') return false
|
if (!secondArg || secondArg?.type !== 'Identifier') return false
|
||||||
if (secondArg.name === primaryVarDec?.id?.name) return true
|
if (secondArg.name === primaryVarDec?.id?.name) return true
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user