comparison tpc.js @ 251:2557ce4e671f

Fix a couple of compiler bugs. topenv was getting initialized in multiple places. This resulted in multiple copies of modules getting created which caused problems for macro expansion. Additionally, arguments were not being marked as declared during code generation so assigning to an argument that was not closed over generated invalid C code.
author Michael Pavone <pavone@retrodev.com>
date Fri, 11 Apr 2014 22:29:32 -0700
parents 2dac67e9d18b
children
comparison
equal deleted inserted replaced
250:c58e17f5c0f6 251:2557ce4e671f
107 107
108 var parsed = parseFile(filename); 108 var parsed = parseFile(filename);
109 if (debugmode) { 109 if (debugmode) {
110 debugprint = print; 110 debugprint = print;
111 } 111 }
112 parsed = parsed.macroexpand(new topenv(includes)); 112 var top = new topenv(includes);
113 parsed = parsed.macroexpand(top);
113 if (macroonly) { 114 if (macroonly) {
114 print(''+parsed); 115 print(''+parsed);
115 } else { 116 } else {
116 toplevel = new topsymbols(includes); 117 toplevel = new topsymbols(includes, top);
117 switch(backend) 118 switch(backend)
118 { 119 {
119 case 'C': 120 case 'C':
120 var c = parsed.toCModule(); 121 var c = parsed.toCModule();
121 break; 122 break;