mirror of
https://github.com/cappuccino/cappuccino.git
synced 2026-10-10 02:40:59 +00:00
Fixed: If receiver in the function objj_msgSend is a class we don't need to check if it is nil as a class can never be nil without the load has already failed.
This commit is contained in:
1 parent
88d2ed9e93
commit
e8e10d4224
5 files changed
+17
-7
No files matched your search
@@ -2170,9 +2170,18 @@ MessageSendExpression: function(node, st, c) {
|
||||
// If it is 'self' we assume it will never be nil and remove that test
|
||||
var receiverIsIdentifier = nodeObject.type === "Identifier" && !(st.currentMethodType() === "-" && compiler.getIvarForClass(nodeObject.name, st) && !st.getLvar(nodeObject.name, true)),
|
||||
selfLvar,
|
||||
receiverIsNotSelf = !receiverIsIdentifier || nodeObject.name !== "self" || !(selfLvar = st.getLvar("self", true)) || !selfLvar.scope || selfLvar.scope.assignmentToSelf;
|
||||
receiverIsNotSelf;
|
||||
|
||||
if (receiverIsIdentifier) {
|
||||
var name = nodeObject.name,
|
||||
selfLvar = st.getLvar(name);
|
||||
|
||||
if (name === "self") {
|
||||
receiverIsNotSelf = !selfLvar || !selfLvar.scope || selfLvar.scope.assignmentToSelf;
|
||||
} else {
|
||||
receiverIsNotSelf = !!selfLvar || !compiler.getClassDef(name);
|
||||
}
|
||||
|
||||
if (receiverIsNotSelf) {
|
||||
buffer.concat("(");
|
||||
c(nodeObject, st, "Expression");
|
||||
@@ -2180,6 +2189,7 @@ MessageSendExpression: function(node, st, c) {
|
||||
}
|
||||
c(nodeObject, st, "Expression");
|
||||
} else {
|
||||
receiverIsNotSelf = true;
|
||||
if (!st.receiverLevel) st.receiverLevel = 0;
|
||||
buffer.concat("((___r");
|
||||
buffer.concat(++st.receiverLevel + "");
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
|
||||
[CPArray new];
|
||||
[object message];
|
||||
@@ -1,2 +1,2 @@
|
||||
|
||||
(object==null?null:object.isa.objj_msgSend0(object,"message"));
|
||||
CPArray.isa.objj_msgSend0(CPArray,"new");
|
||||
(object==null?null:object.isa.objj_msgSend0(object,"message"));
|
||||
@@ -1,2 +1,2 @@
|
||||
|
||||
[CPArray arrayWithArray:[]];
|
||||
[object label:argument];
|
||||
@@ -1,2 +1,2 @@
|
||||
|
||||
(object==null?null:object.isa.objj_msgSend1(object,"label:",argument));
|
||||
CPArray.isa.objj_msgSend1(CPArray,"arrayWithArray:",[]);
|
||||
(object==null?null:object.isa.objj_msgSend1(object,"label:",argument));
|
||||
Reference in new issue
Block a user