Mercurial > repos > tabletprog
diff cbackend.js @ 267:d2b70cba661e
Warning cleanup
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Fri, 18 Jul 2014 00:14:22 -0700 |
parents | 75dc7161c1ca |
children | bb2b4613fdc8 |
line wrap: on
line diff
--- a/cbackend.js Thu Jul 17 23:57:41 2014 -0700 +++ b/cbackend.js Fri Jul 18 00:14:22 2014 -0700 @@ -93,7 +93,7 @@ if (info.type == 'toplevel') { return toplevel.moduleVar(name); } else if (info.type == 'self' && info.def instanceof lambda) { - return 'mcall(' + getMethodId(name) + '/* ' + name + ' */, 1, ' + (new symbol('self', this.symbols)).toC() + ')'; + return 'mcall(' + getMethodId(name) + '/* ' + name + ' */, 1, (object *)' + (new symbol('self', this.symbols)).toC() + ')'; } else if (info.type == 'parent' && info.def instanceof lambda) { var obj = (new symbol('self', this.symbols)).toC() + '->header.'; for (var i = 0; i < info.depth; ++i) { @@ -449,7 +449,7 @@ this.addMessage(propname, { vars: {}, lines: [ - 'return self->' + escaped + ';' + 'return (object *)self->' + escaped + ';' ]}); this.addMessage(propname + '!', { vars: {}, @@ -1086,7 +1086,7 @@ } if (compiled.length) { if (exprs[exprs.length - 1] instanceof assignment) { - compiled.push('return ' + exprs[exprs.length - 1].symbol.toC() + ';'); + compiled.push('return (object *)' + exprs[exprs.length - 1].symbol.toC() + ';'); } else { compiled[compiled.length-1] = 'return (object *)(' + compiled[compiled.length-1] + ');'; } @@ -1205,7 +1205,14 @@ this.symbols.declareVar(this.symbol.name); debugprint('//declared var', this.symbol.name); } - return prefix + this.symbol.toC() + ' = ' + val; + var cast = ''; + if (this.symbol.name == 'self') { + //ugly hack alert + cast = '(void *)'; + } else { + cast = '(object *)'; + } + return prefix + this.symbol.toC() + ' = ' + cast + val; }; assignment.prototype.toCObject = function(cobj) { debugprint('//message definition', this.symbol.name);