diff options
author | alon@honor <none@none> | 2010-09-03 23:18:37 -0700 |
---|---|---|
committer | alon@honor <none@none> | 2010-09-03 23:18:37 -0700 |
commit | 62dd7f4bb734017e0a855fee79494cdf6959ae8c (patch) | |
tree | aee58cb82c16933b0fc946e645b444c11fd48544 | |
parent | 8181e238184e170ec31bab865859e7c9294824a4 (diff) |
Support for global pointers +test
-rw-r--r-- | src/parser.js | 3 | ||||
-rw-r--r-- | tests/runner.py | 4 |
2 files changed, 6 insertions, 1 deletions
diff --git a/src/parser.js b/src/parser.js index 9908b0a5..31c29ae1 100644 --- a/src/parser.js +++ b/src/parser.js @@ -34,6 +34,7 @@ function removePointing(type, num) { } function pointingLevels(type) { + if (!type) return 0; var ret = 0; var len1 = type.length - 1; while (type[len1-ret] === '*') { @@ -1858,6 +1859,8 @@ function JSify(data) { //print('//yyyyy ' + JSON.stringify(value) + ',' + type); if (isNumberType(type)) { return makePointer(value.text); + } else if (pointingLevels(type) == 1) { + return makePointer(value.text); } else if (value.text[0] == '"') { value.text = value.text.substr(1, value.text.length-2); return makePointer('intArrayFromString("' + value.text + '")'); diff --git a/tests/runner.py b/tests/runner.py index 4aab0970..1509ac28 100644 --- a/tests/runner.py +++ b/tests/runner.py @@ -158,6 +158,7 @@ class T(unittest.TestCase): src = ''' #include <stdio.h> int global = 20; + int *far; int main() { int x = 5; @@ -166,7 +167,8 @@ class T(unittest.TestCase): y += 1; int w = x*3+4; int k = w < 15 ? 99 : 101; - k += global; + far = &k; + *far += global; int i = k > 100; // Should be an int, not a bool! int j = i << 6; j >>= 1; |