diff --git a/idea/src/org/jetbrains/jet/codegen/intrinsics/IntrinsicMethods.java b/idea/src/org/jetbrains/jet/codegen/intrinsics/IntrinsicMethods.java index 6e4fbff5a21..402a6db487b 100644 --- a/idea/src/org/jetbrains/jet/codegen/intrinsics/IntrinsicMethods.java +++ b/idea/src/org/jetbrains/jet/codegen/intrinsics/IntrinsicMethods.java @@ -72,6 +72,7 @@ public class IntrinsicMethods { declareIntrinsicFunction("String", "plus", 1, new Concat()); declareIntrinsicStringMethods(); + declareIntrinsicProperty("String", "length", new StringLength()); } private void declareIntrinsicStringMethods() { diff --git a/idea/src/org/jetbrains/jet/codegen/intrinsics/StringLength.java b/idea/src/org/jetbrains/jet/codegen/intrinsics/StringLength.java new file mode 100644 index 00000000000..04a254df114 --- /dev/null +++ b/idea/src/org/jetbrains/jet/codegen/intrinsics/StringLength.java @@ -0,0 +1,23 @@ +package org.jetbrains.jet.codegen.intrinsics; + +import com.intellij.psi.PsiElement; +import org.jetbrains.jet.codegen.ExpressionCodegen; +import org.jetbrains.jet.codegen.JetTypeMapper; +import org.jetbrains.jet.codegen.StackValue; +import org.jetbrains.jet.lang.psi.JetExpression; +import org.objectweb.asm.Type; +import org.objectweb.asm.commons.InstructionAdapter; + +import java.util.List; + +/** + * @author alex.tkachman + */ +public class StringLength implements IntrinsicMethod { + @Override + public StackValue generate(ExpressionCodegen codegen, InstructionAdapter v, Type expectedType, PsiElement element, List arguments, StackValue receiver) { + receiver.put(JetTypeMapper.TYPE_OBJECT, v); + v.invokevirtual("java/lang/String", "length", "()I"); + return StackValue.onStack(Type.INT_TYPE); + } +}