Skip to content

Commit 1a91290

Browse files
committed
More warnings
Signed-off-by: Nick Cameron <[email protected]>
1 parent 20c074d commit 1a91290

File tree

7 files changed

+42
-33
lines changed

7 files changed

+42
-33
lines changed

rust/kcl-lib/src/execution/annotations.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use crate::{
1212
};
1313

1414
/// Annotations which should cause re-execution if they change.
15-
pub(super) const SIGNIFICANT_ATTRS: [&str; 2] = [SETTINGS, NO_PRELUDE];
15+
pub(super) const SIGNIFICANT_ATTRS: [&str; 3] = [SETTINGS, NO_PRELUDE, WARNINGS];
1616

1717
pub(crate) const SETTINGS: &str = "settings";
1818
pub(crate) const SETTINGS_UNIT_LENGTH: &str = "defaultLengthUnit";
@@ -162,7 +162,7 @@ pub(super) fn many_of(
162162
vec![source_range],
163163
))
164164
})
165-
.map(|v| *v)
165+
.copied()
166166
})
167167
.collect::<Result<Vec<&str>, KclError>>()
168168
}

rust/kcl-lib/src/execution/exec_ast.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1780,6 +1780,7 @@ impl Node<PipeExpression> {
17801780
#[cfg(test)]
17811781
mod test {
17821782
use std::sync::Arc;
1783+
17831784
use tokio::io::AsyncWriteExt;
17841785

17851786
use super::*;

rust/kcl-lib/src/execution/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -604,8 +604,9 @@ impl ExecutorContext {
604604
settings: &self.settings,
605605
};
606606

607+
let cache_result = cache::get_changed_program(old, new).await;
607608
// Get the program that actually changed from the old and new information.
608-
let (clear_scene, program, import_check_info) = match cache::get_changed_program(old, new).await {
609+
let (clear_scene, program, import_check_info) = match cache_result {
609610
CacheResult::ReExecute {
610611
clear_scene,
611612
reapply_settings,

rust/kcl-lib/src/execution/types.rs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -760,7 +760,7 @@ impl NumericType {
760760
}
761761
}
762762

763-
fn coerce(&self, val: &KclValue) -> Result<KclValue, CoercionError> {
763+
fn coerce(&self, val: &KclValue, exec_state: &mut ExecState) -> Result<KclValue, CoercionError> {
764764
let KclValue::Number { value, ty, meta } = val else {
765765
return Err(val.into());
766766
};
@@ -832,6 +832,14 @@ impl NumericType {
832832
}
833833

834834
(Default { angle: a1, .. }, Known(UnitType::Angle(a2))) => {
835+
let mut source_ranges = Into::<Vec<SourceRange>>::into(val);
836+
// A single source range means it's not via a function or something.
837+
if source_ranges.len() == 1 {
838+
exec_state.warn(
839+
CompilationError::err(source_ranges.pop().unwrap(), "Prefer to use explicit units for angles"),
840+
annotations::WARN_ANGLE_UNITS,
841+
);
842+
}
835843
let (value, ty) = a1.adjust_to(*value, *a2);
836844
Ok(KclValue::Number {
837845
value,
@@ -1156,7 +1164,7 @@ impl KclValue {
11561164
PrimitiveType::Any => Ok(self.clone()),
11571165
PrimitiveType::Number(ty) => {
11581166
if convert_units {
1159-
return ty.coerce(self);
1167+
return ty.coerce(self, exec_state);
11601168
}
11611169

11621170
// Instead of converting units, reinterpret the number as having
@@ -1172,10 +1180,10 @@ impl KclValue {
11721180
value: *n,
11731181
meta: meta.clone(),
11741182
};
1175-
return ty.coerce(&value);
1183+
return ty.coerce(&value, exec_state);
11761184
}
11771185
}
1178-
ty.coerce(self)
1186+
ty.coerce(self, exec_state)
11791187
}
11801188
PrimitiveType::String => match self {
11811189
KclValue::String { .. } => Ok(self.clone()),

rust/kcl-lib/src/std/extrude.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,12 @@ async fn inner_extrude(
105105
(Some(angle), angle_step, center) => {
106106
let center = center.clone().map(point_to_mm).map(Point2d::from).unwrap_or_default();
107107
let total_rotation_angle = Angle::from_degrees(angle.to_degrees(exec_state, args.source_range));
108-
let angle_step_size = Angle::from_degrees(angle_step.clone().map(|a| a.to_degrees(exec_state, args.source_range)).unwrap_or(15.0));
108+
let angle_step_size = Angle::from_degrees(
109+
angle_step
110+
.clone()
111+
.map(|a| a.to_degrees(exec_state, args.source_range))
112+
.unwrap_or(15.0),
113+
);
109114
ModelingCmd::from(mcmd::TwistExtrude {
110115
target: sketch.id.into(),
111116
distance: LengthUnit(length.to_mm()),

src/lang/std/sketch.ts

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ import {
3131
createCallExpressionStdLibKw,
3232
createLabeledArg,
3333
createLiteral,
34-
createLiteralMaybeSuffix,
3534
createLocalName,
3635
createPipeExpression,
3736
createTagDeclarator,
@@ -4227,13 +4226,8 @@ const tangentialArcHelpers = {
42274226
callExpression,
42284227
createLiteral(roundOff(radius, 2))
42294228
)
4230-
const angleValue = createLiteralMaybeSuffix({
4231-
value: roundOff(angle, 2),
4232-
suffix: 'Deg',
4233-
})
4234-
if (!err(angleValue)) {
4235-
mutateKwArg(ARG_ANGLE, callExpression, angleValue)
4236-
}
4229+
const angleValue = createLiteral(roundOff(angle, 2), 'Deg')
4230+
mutateKwArg(ARG_ANGLE, callExpression, angleValue)
42374231
} else {
42384232
console.debug('Invalid center calculated for tangential arc')
42394233
}

src/machines/modelingMachine.test.ts

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -376,45 +376,45 @@ p3 = [342.51, 216.38],
376376
namedConstantConstraint: [
377377
{
378378
name: 'should constrain angledLine, angle value',
379-
...makeStraightSegmentSnippet('angledLine(angle = 45, length = 100)'),
379+
...makeStraightSegmentSnippet('angledLine(angle = 45deg, length = 100)'),
380380
constraintIndex: 0,
381381
expectedResult: 'angledLine(angle = test_variable, length = 100)',
382382
},
383383
{
384384
name: 'should constrain angledLine, length value',
385-
...makeStraightSegmentSnippet('angledLine(angle = 45, length = 100)'),
385+
...makeStraightSegmentSnippet('angledLine(angle = 45deg, length = 100)'),
386386
constraintIndex: 1,
387-
expectedResult: 'angledLine(angle = 45, length = test_variable)',
387+
expectedResult: 'angledLine(angle = 45deg, length = test_variable)',
388388
},
389389
{
390390
name: 'should constrain angledLine, endAbsoluteY value',
391391
...makeStraightSegmentSnippet(
392-
'angledLine(angle = 45, endAbsoluteY = 5)'
392+
'angledLine(angle = 45deg, endAbsoluteY = 5)'
393393
),
394394
constraintIndex: 1,
395395
expectedResult:
396-
'angledLine(angle = 45, endAbsoluteY = test_variable)',
396+
'angledLine(angle = 45deg, endAbsoluteY = test_variable)',
397397
},
398398
{
399399
name: 'should constrain angledLine, endAbsoluteX value',
400400
...makeStraightSegmentSnippet(
401-
'angledLine(angle = 45, endAbsoluteX = 5)'
401+
'angledLine(angle = 45deg, endAbsoluteX = 5)'
402402
),
403403
constraintIndex: 1,
404404
expectedResult:
405-
'angledLine(angle = 45, endAbsoluteX = test_variable)',
405+
'angledLine(angle = 45deg, endAbsoluteX = test_variable)',
406406
},
407407
{
408408
name: 'should constrain angledLine, lengthY value',
409-
...makeStraightSegmentSnippet('angledLine(angle = 45, lengthY = 5)'),
409+
...makeStraightSegmentSnippet('angledLine(angle = 45deg, lengthY = 5)'),
410410
constraintIndex: 1,
411-
expectedResult: 'angledLine(angle = 45, lengthY = test_variable)',
411+
expectedResult: 'angledLine(angle = 45deg, lengthY = test_variable)',
412412
},
413413
{
414414
name: 'should constrain angledLine, lengthX value',
415-
...makeStraightSegmentSnippet('angledLine(angle = 45, lengthX = 5)'),
415+
...makeStraightSegmentSnippet('angledLine(angle = 45deg, lengthX = 5)'),
416416
constraintIndex: 1,
417-
expectedResult: 'angledLine(angle = 45, lengthX = test_variable)',
417+
expectedResult: 'angledLine(angle = 45deg, lengthX = test_variable)',
418418
},
419419
],
420420
removeAllConstraintsCases: [
@@ -466,7 +466,7 @@ p3 = [342.51, 216.38],
466466
'angledLine(angle = testVar1, length = testVar2)'
467467
),
468468
constraintIndex: 0,
469-
expectedResult: 'angledLine(angle = 55, length = testVar2)',
469+
expectedResult: 'angledLine(angle = 55deg, length = testVar2)',
470470
},
471471
{
472472
name: 'should un-constrain angledLine, length value',
@@ -512,27 +512,27 @@ p3 = [342.51, 216.38],
512512
deleteSegment: [
513513
{
514514
name: 'should delete angledLine, angle length',
515-
...makeStraightSegmentSnippet('angledLine(angle = 45, length = 100)'),
515+
...makeStraightSegmentSnippet('angledLine(angle = 45deg, length = 100)'),
516516
},
517517
{
518518
name: 'should delete angledLine, endAbsoluteY',
519519
...makeStraightSegmentSnippet(
520-
'angledLine(angle = 45, endAbsoluteY = 5)'
520+
'angledLine(angle = 45deg, endAbsoluteY = 5)'
521521
),
522522
},
523523
{
524524
name: 'should delete angledLine, endAbsoluteX',
525525
...makeStraightSegmentSnippet(
526-
'angledLine(angle = 45, endAbsoluteX = 5)'
526+
'angledLine(angle = 45deg, endAbsoluteX = 5)'
527527
),
528528
},
529529
{
530530
name: 'should delete angledLine, lengthY',
531-
...makeStraightSegmentSnippet('angledLine(angle = 45, lengthY = 5)'),
531+
...makeStraightSegmentSnippet('angledLine(angle = 45deg, lengthY = 5)'),
532532
},
533533
{
534534
name: 'should delete angledLine, lengthX',
535-
...makeStraightSegmentSnippet('angledLine(angle = 45, lengthX = 5)'),
535+
...makeStraightSegmentSnippet('angledLine(angle = 45deg, lengthX = 5)'),
536536
},
537537
],
538538
},

0 commit comments

Comments
 (0)