aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/parser.js3
-rw-r--r--tests/runner.py3
2 files changed, 4 insertions, 2 deletions
diff --git a/src/parser.js b/src/parser.js
index 94d6cb86..7fb9432b 100644
--- a/src/parser.js
+++ b/src/parser.js
@@ -702,7 +702,7 @@ function intertyper(data) {
// mathops
substrate.addZyme('Mathops', {
selectItem: function(item) { return item.indent === -1 && item.tokens && item.tokens.length >= 3 &&
- ['add', 'sub', 'sdiv', 'mul', 'icmp', 'zext', 'urem', 'srem', 'fadd', 'fmul', 'fdiv', 'fcmp', 'uitofp', 'sitofp', 'fpext', 'fptoui', 'fptosi', 'trunc', 'sext', 'select', 'shl', 'shr', 'ashl', 'ashr']
+ ['add', 'sub', 'sdiv', 'mul', 'icmp', 'zext', 'urem', 'srem', 'fadd', 'fmul', 'fdiv', 'fcmp', 'uitofp', 'sitofp', 'fpext', 'fptoui', 'fptosi', 'trunc', 'sext', 'select', 'shl', 'shr', 'ashl', 'ashr', 'xor']
.indexOf(item.tokens[0].text) != -1 && !item.intertype },
processItem: function(item) {
item.intertype = 'mathop';
@@ -2226,6 +2226,7 @@ function JSify(data) {
case 'sdiv': case 'udiv': return 'Math.floor(' + ident + ' / ' + ident2 + ')';
case 'mul': return ident + ' * ' + ident2;
case 'urem': case 'srem': return 'Math.floor(' + ident + ' % ' + ident2 + ')';
+ case 'xor': return ident + ' ^ ' + ident2;
case 'shl': case 'ashl': return ident + ' << ' + ident2;
case 'shr': case 'ashr': return ident + ' >> ' + ident2;
case 'fadd': return ident + ' + ' + ident2;
diff --git a/tests/runner.py b/tests/runner.py
index 981f4136..c72b1e86 100644
--- a/tests/runner.py
+++ b/tests/runner.py
@@ -166,11 +166,12 @@ class T(unittest.TestCase):
int i = k > 100; // Should be an int, not a bool!
int j = i << 6;
j >>= 1;
+ j = j ^ 5;
printf("*%d,%d,%d,%d,%d,%d,%d*\\n", x, y, z, w, k, i, j);
return 0;
}
'''
- self.do_test(src, '*5,23,10,19,101,1,32*')
+ self.do_test(src, '*5,23,10,19,101,1,37*')
def test_floatvars(self):
src = '''