aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralon@honor <none@none>2010-09-25 20:57:52 -0700
committeralon@honor <none@none>2010-09-25 20:57:52 -0700
commit736dac5109a9899a5a72f12f68d9544cb2b8781b (patch)
tree03bd06b6d7d7b91bf1b1db7a023d5a342380b54b
parentb94c061e122f155cc5c1262a1bb470cb49ee04b4 (diff)
fix for arrays of arrays +test
-rw-r--r--src/jsifier.js3
-rw-r--r--src/preamble.js5
-rw-r--r--tests/runner.py20
3 files changed, 26 insertions, 2 deletions
diff --git a/src/jsifier.js b/src/jsifier.js
index 381b4cf7..8553676c 100644
--- a/src/jsifier.js
+++ b/src/jsifier.js
@@ -126,7 +126,8 @@ function JSify(data) {
var type = segment[0].text;
return '[' + alignStruct(handleSegments(segment[1].tokens), type).join(', ') + ']';
} else if (segment[1].type == '[') {
- return '[' + handleSegments(segment[1].item[0].tokens).join(', ') + ']'; // XXX alignStruct?
+ var type = segment[0].text;
+ return '[' + alignStruct(handleSegments(segment[1].item[0].tokens), type).join(', ') + ']';
} else if (segment.length == 2) {
return parseNumerical(toNiceIdent(segment[1].text));
} else {
diff --git a/src/preamble.js b/src/preamble.js
index f53f50ad..2260d08a 100644
--- a/src/preamble.js
+++ b/src/preamble.js
@@ -146,6 +146,11 @@ function __formatString() {
if (next == '.'.charCodeAt(0)) {
var limit = parseInt(String.fromCharCode(HEAP[textIndex+2]));
var dotIndex = argText.indexOf('.');
+ if (dotIndex == -1) {
+ dotIndex = argText.length;
+ argText += '.';
+ }
+ argText += '00000000000'; // padding
argText = argText.substr(0, dotIndex+1+limit);
textIndex += 2;
}
diff --git a/tests/runner.py b/tests/runner.py
index 53c553d0..fe208c25 100644
--- a/tests/runner.py
+++ b/tests/runner.py
@@ -439,6 +439,24 @@ class T(unittest.TestCase):
'''
self.do_test(src, '*zzcheezzz*')
+ def test_array2(self):
+ src = '''
+ #include <stdio.h>
+
+ static const double grid[4][2] = {
+ {-3/3.,-1/3.},{+1/3.,-3/3.},
+ {-1/3.,+3/3.},{+3/3.,+1/3.}
+ };
+
+ int main() {
+ for (int i = 0; i < 4; i++)
+ printf("%d:%.2f,%.2f ", i, grid[i][0], grid[i][1]);
+ printf("\\n");
+ return 0;
+ }
+ '''
+ self.do_test(src, '0:-1.00,-0.33 1:0.33,-1.00 2:-0.33,1.00 3:1.00,0.33')
+
def test_constglobalstructs(self):
src = '''
#include <stdio.h>
@@ -665,7 +683,7 @@ class T(unittest.TestCase):
return 0;
}
'''
- self.do_test(src, '*0,0,0*')
+ self.do_test(src, '*0.00,0.00,0.00*')
def test_nestedstructs(self):
src = '''