Skip to content

Commit eb1c994

Browse files
committed
update expressions to error for non-ints
1 parent 06e79cd commit eb1c994

File tree

4 files changed

+48
-1
lines changed

4 files changed

+48
-1
lines changed

dsc_lib/src/functions/int.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,13 @@ mod tests {
6767
assert_eq!(result, 123);
6868
}
6969

70+
#[test]
71+
fn float() {
72+
let mut parser = Statement::new().unwrap();
73+
let err = parser.parse_and_execute("[int(1.2)]", &Context::new()).unwrap_err();
74+
assert!(matches!(err, DscError::IntegerConversion(_)));
75+
}
76+
7077
#[test]
7178
fn nested() {
7279
let mut parser = Statement::new().unwrap();

tree-sitter-dscexpression/corpus/invalid_expressions.txt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,3 +110,17 @@ Incomplete expression
110110
(function
111111
(functionName)))
112112
(MISSING "]"))
113+
114+
=====
115+
Invalid float argument
116+
=====
117+
[myFunction(a.1)]
118+
---
119+
120+
(statement
121+
(expression
122+
(function
123+
(functionName)
124+
(ERROR
125+
(functionName)
126+
(memberName)))))

tree-sitter-dscexpression/corpus/valid_expressions.txt

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,3 +101,29 @@ Nested dot-notation
101101
(memberName)))))
102102
(memberAccess
103103
(memberName))))
104+
105+
=====
106+
Float input
107+
=====
108+
[myFunction(1234.5678)]
109+
---
110+
111+
(statement
112+
(expression
113+
(function
114+
(functionName)
115+
(arguments
116+
(number)))))
117+
118+
=====
119+
Quotes float input
120+
=====
121+
[myFunction('1234.5678')]
122+
---
123+
124+
(statement
125+
(expression
126+
(function
127+
(functionName)
128+
(arguments
129+
(string)))))

tree-sitter-dscexpression/grammar.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ module.exports = grammar({
2929
_quotedString: $ => seq('\'', $.string, '\''),
3030
// ARM strings do not allow to contain single-quote characters
3131
string: $ => /[^']*/,
32-
number: $ => /-?\d+/,
32+
number: $ => /[+-]?([0-9]*[.])?[0-9]+/,
3333
boolean: $ => choice('true', 'false'),
3434

3535
memberAccess: $ => seq('.', $.memberName, repeat(seq('.', $.memberName))),

0 commit comments

Comments
 (0)