Rename kcl Value to Expr (#3360)
Rename kcl's Value to Expr As Jon pointed out, kcl's `Value` enum is actually an expression. "2+2" isn't a value, it's an expression, which can compute a value. So I renamed it `Expr`.
This commit is contained in:
@ -5,7 +5,7 @@ import { cleanErrs, err } from 'lib/trap'
|
||||
import {
|
||||
CallExpression,
|
||||
Program,
|
||||
Value,
|
||||
Expr,
|
||||
BinaryPart,
|
||||
VariableDeclarator,
|
||||
PathToNode,
|
||||
@ -68,8 +68,8 @@ export type ConstraintType =
|
||||
|
||||
function createCallWrapper(
|
||||
a: ToolTip,
|
||||
val: [Value, Value] | Value,
|
||||
tag?: Value,
|
||||
val: [Expr, Expr] | Expr,
|
||||
tag?: Expr,
|
||||
valueUsedInTransform?: number
|
||||
): ReturnType<TransformCallback> {
|
||||
const args = [createFirstArg(a, val), createPipeSubstitution()]
|
||||
@ -103,8 +103,8 @@ function createCallWrapper(
|
||||
*/
|
||||
function createStdlibCallExpression(
|
||||
tool: ToolTip,
|
||||
val: Value,
|
||||
tag?: Value,
|
||||
val: Expr,
|
||||
tag?: Expr,
|
||||
valueUsedInTransform?: number
|
||||
): ReturnType<TransformCallback> {
|
||||
const args = [val, createPipeSubstitution()]
|
||||
@ -126,10 +126,10 @@ function intersectCallWrapper({
|
||||
valueUsedInTransform,
|
||||
}: {
|
||||
fnName: string
|
||||
angleVal: Value
|
||||
offsetVal: Value
|
||||
intersectTag: Value
|
||||
tag?: Value
|
||||
angleVal: Expr
|
||||
offsetVal: Expr
|
||||
intersectTag: Expr
|
||||
tag?: Expr
|
||||
valueUsedInTransform?: number
|
||||
}): ReturnType<TransformCallback> {
|
||||
const firstArg: any = {
|
||||
@ -137,7 +137,7 @@ function intersectCallWrapper({
|
||||
offset: offsetVal,
|
||||
intersectTag,
|
||||
}
|
||||
const args: Value[] = [
|
||||
const args: Expr[] = [
|
||||
createObjectExpression(firstArg),
|
||||
createPipeSubstitution(),
|
||||
]
|
||||
@ -154,11 +154,11 @@ export type TransformInfo = {
|
||||
tooltip: ToolTip
|
||||
createNode: (a: {
|
||||
varValues: VarValues
|
||||
varValA: Value // x / angle
|
||||
varValB: Value // y / length or x y for angledLineOfXlength etc
|
||||
varValA: Expr // x / angle
|
||||
varValB: Expr // y / length or x y for angledLineOfXlength etc
|
||||
referenceSegName: string
|
||||
tag?: Value
|
||||
forceValueUsedInTransform?: Value
|
||||
tag?: Expr
|
||||
forceValueUsedInTransform?: Expr
|
||||
}) => TransformCallback
|
||||
}
|
||||
|
||||
@ -234,8 +234,8 @@ const angledLineAngleCreateNode: TransformInfo['createNode'] =
|
||||
|
||||
const getMinAndSegLenVals = (
|
||||
referenceSegName: string,
|
||||
varVal: Value
|
||||
): [Value, BinaryPart] => {
|
||||
varVal: Expr
|
||||
): [Expr, BinaryPart] => {
|
||||
const segLenVal = createSegLen(referenceSegName)
|
||||
return [
|
||||
createCallExpression('min', [segLenVal, varVal]),
|
||||
@ -245,9 +245,9 @@ const getMinAndSegLenVals = (
|
||||
|
||||
const getMinAndSegAngVals = (
|
||||
referenceSegName: string,
|
||||
varVal: Value,
|
||||
varVal: Expr,
|
||||
fnName: 'legAngX' | 'legAngY' = 'legAngX'
|
||||
): [Value, BinaryPart] => {
|
||||
): [Expr, BinaryPart] => {
|
||||
const minVal = createCallExpression('min', [
|
||||
createSegLen(referenceSegName),
|
||||
varVal,
|
||||
@ -259,12 +259,12 @@ const getMinAndSegAngVals = (
|
||||
return [minVal, legAngle]
|
||||
}
|
||||
|
||||
const getSignedLeg = (arg: Value, legLenVal: BinaryPart) =>
|
||||
const getSignedLeg = (arg: Expr, legLenVal: BinaryPart) =>
|
||||
arg.type === 'Literal' && Number(arg.value) < 0
|
||||
? createUnaryExpression(legLenVal)
|
||||
: legLenVal
|
||||
|
||||
const getLegAng = (arg: Value, legAngleVal: BinaryPart) => {
|
||||
const getLegAng = (arg: Expr, legAngleVal: BinaryPart) => {
|
||||
const ang = (arg.type === 'Literal' && Number(arg.value)) || 0
|
||||
const normalisedAngle = ((ang % 360) + 360) % 360 // between 0 and 360
|
||||
const truncatedTo90 = Math.floor(normalisedAngle / 90) * 90
|
||||
@ -275,14 +275,14 @@ const getLegAng = (arg: Value, legAngleVal: BinaryPart) => {
|
||||
return truncatedTo90 === 0 ? legAngleVal : binExp
|
||||
}
|
||||
|
||||
const getAngleLengthSign = (arg: Value, legAngleVal: BinaryPart) => {
|
||||
const getAngleLengthSign = (arg: Expr, legAngleVal: BinaryPart) => {
|
||||
const ang = (arg.type === 'Literal' && Number(arg.value)) || 0
|
||||
const normalisedAngle = ((ang % 180) + 180) % 180 // between 0 and 180
|
||||
return normalisedAngle > 90 ? createUnaryExpression(legAngleVal) : legAngleVal
|
||||
}
|
||||
|
||||
function getClosesAngleDirection(
|
||||
arg: Value,
|
||||
arg: Expr,
|
||||
refAngle: number,
|
||||
angleVal: BinaryPart
|
||||
) {
|
||||
@ -305,7 +305,7 @@ const setHorzVertDistanceCreateNode =
|
||||
getArgLiteralVal(args?.[index]) - (referencedSegment?.to?.[index] || 0),
|
||||
2
|
||||
)
|
||||
let finalValue: Value = createBinaryExpressionWithUnary([
|
||||
let finalValue: Expr = createBinaryExpressionWithUnary([
|
||||
createSegEnd(referenceSegName, !index),
|
||||
(forceValueUsedInTransform as BinaryPart) ||
|
||||
createLiteral(valueUsedInTransform),
|
||||
@ -1374,7 +1374,7 @@ export function getTransformInfo(
|
||||
}
|
||||
|
||||
export function getConstraintType(
|
||||
val: Value | [Value, Value] | [Value, Value, Value],
|
||||
val: Expr | [Expr, Expr] | [Expr, Expr, Expr],
|
||||
fnName: ToolTip
|
||||
): LineInputsType | null {
|
||||
// this function assumes that for two val sketch functions that one arg is locked down not both
|
||||
@ -1416,7 +1416,7 @@ export function getTransformInfos(
|
||||
getNodePathFromSourceRange(ast, range)
|
||||
)
|
||||
const nodes = paths.map((pathToNode) =>
|
||||
getNodeFromPath<Value>(ast, pathToNode, 'CallExpression')
|
||||
getNodeFromPath<Expr>(ast, pathToNode, 'CallExpression')
|
||||
)
|
||||
|
||||
try {
|
||||
@ -1449,7 +1449,7 @@ export function getRemoveConstraintsTransforms(
|
||||
getNodePathFromSourceRange(ast, selectionRange.range)
|
||||
)
|
||||
const nodes = paths.map((pathToNode) =>
|
||||
getNodeFromPath<Value>(ast, pathToNode)
|
||||
getNodeFromPath<Expr>(ast, pathToNode)
|
||||
)
|
||||
|
||||
const theTransforms = nodes.map((nodeMeta) => {
|
||||
@ -1484,7 +1484,7 @@ export function transformSecondarySketchLinesTagFirst({
|
||||
transformInfos: TransformInfo[]
|
||||
programMemory: ProgramMemory
|
||||
forceSegName?: string
|
||||
forceValueUsedInTransform?: Value
|
||||
forceValueUsedInTransform?: Expr
|
||||
}):
|
||||
| {
|
||||
modifiedAst: Program
|
||||
@ -1555,7 +1555,7 @@ export function transformAstSketchLines({
|
||||
transformInfos: TransformInfo[]
|
||||
programMemory: ProgramMemory
|
||||
referenceSegName: string
|
||||
forceValueUsedInTransform?: Value
|
||||
forceValueUsedInTransform?: Expr
|
||||
referencedSegmentRange?: Selection['range']
|
||||
}):
|
||||
| {
|
||||
@ -1609,7 +1609,7 @@ export function transformAstSketchLines({
|
||||
)
|
||||
return
|
||||
|
||||
const nodeMeta = getNodeFromPath<Value>(ast, a.pathToNode)
|
||||
const nodeMeta = getNodeFromPath<Expr>(ast, a.pathToNode)
|
||||
if (err(nodeMeta)) return
|
||||
|
||||
if (a?.argPosition?.type === 'arrayItem') {
|
||||
@ -1712,11 +1712,11 @@ export function transformAstSketchLines({
|
||||
}
|
||||
}
|
||||
|
||||
function createSegLen(referenceSegName: string): Value {
|
||||
function createSegLen(referenceSegName: string): Expr {
|
||||
return createCallExpression('segLen', [createIdentifier(referenceSegName)])
|
||||
}
|
||||
|
||||
function createSegAngle(referenceSegName: string): Value {
|
||||
function createSegAngle(referenceSegName: string): Expr {
|
||||
return createCallExpression('segAng', [createIdentifier(referenceSegName)])
|
||||
}
|
||||
|
||||
@ -1732,7 +1732,7 @@ function createLastSeg(isX: boolean): CallExpression {
|
||||
])
|
||||
}
|
||||
|
||||
function getArgLiteralVal(arg: Value): number {
|
||||
function getArgLiteralVal(arg: Expr): number {
|
||||
return arg?.type === 'Literal' ? Number(arg.value) : 0
|
||||
}
|
||||
|
||||
@ -1776,7 +1776,7 @@ export function getConstraintLevelFromSourceRange(
|
||||
}
|
||||
|
||||
export function isLiteralArrayOrStatic(
|
||||
val: Value | [Value, Value] | [Value, Value, Value] | undefined
|
||||
val: Expr | [Expr, Expr] | [Expr, Expr, Expr] | undefined
|
||||
): boolean {
|
||||
if (!val) return false
|
||||
|
||||
@ -1792,7 +1792,7 @@ export function isLiteralArrayOrStatic(
|
||||
}
|
||||
|
||||
export function isNotLiteralArrayOrStatic(
|
||||
val: Value | [Value, Value] | [Value, Value, Value]
|
||||
val: Expr | [Expr, Expr] | [Expr, Expr, Expr]
|
||||
): boolean {
|
||||
if (Array.isArray(val)) {
|
||||
const a = val[0]
|
||||
|
Reference in New Issue
Block a user