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);