提交 46fcb1a0 编写于 作者: A Andrey Breslav

Merge remote branch 'origin/master'

<project name="Jet CI Bootstrap" default="unzipIdeaSDK">
<target name="unzipIdeaSDK">
<unzip dest="ideaSDK">
<fileset dir="ideaSDK" includes="ideaIC*.zip"/>
</unzip>
</target>
</project>
......@@ -4,6 +4,7 @@ import com.intellij.psi.*;
import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.types.*;
import org.jetbrains.jet.lexer.JetTokens;
import org.objectweb.asm.Label;
import org.objectweb.asm.MethodVisitor;
import org.objectweb.asm.Opcodes;
......@@ -448,6 +449,10 @@ public class ExpressionCodegen extends JetVisitor {
@Override
public void visitBinaryExpression(JetBinaryExpression expression) {
if (expression.getOperationReference().getReferencedNameElementType() == JetTokens.EQ) {
generateAssignmentExpression(expression);
return;
}
DeclarationDescriptor op = bindingContext.resolveReferenceExpression(expression.getOperationReference());
if (op instanceof FunctionDescriptor) {
DeclarationDescriptor cls = op.getContainingDeclaration();
......@@ -467,6 +472,20 @@ public class ExpressionCodegen extends JetVisitor {
throw new UnsupportedOperationException("Don't know how to generate binary op " + expression);
}
private void generateAssignmentExpression(JetBinaryExpression expression) {
if (expression.getLeft() instanceof JetReferenceExpression) {
final JetReferenceExpression lhs = (JetReferenceExpression) expression.getLeft();
final DeclarationDescriptor declarationDescriptor = bindingContext.resolveReferenceExpression(lhs);
final int index = myMap.getIndex(declarationDescriptor);
final Type type = typeMapper.mapType(bindingContext.getExpressionType(lhs));
gen(expression.getRight(), type);
v.store(index, type);
}
else {
throw new UnsupportedOperationException("Don't know how to generate assignment to " + expression.getLeft().getText());
}
}
private boolean isUnitType(JetExpression e) {
return false; // TODO:!!!
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册