diff --git a/idea/src/jet/Library.jet b/idea/src/jet/Library.jet index 211e49cf2db..0d535035baa 100644 --- a/idea/src/jet/Library.jet +++ b/idea/src/jet/Library.jet @@ -42,7 +42,7 @@ fun Any?.toString() : String// = this === other class Iterator { fun next() : T - abstract val hasNext : Boolean + abstract fun hasNext() : Boolean } class Iterable { diff --git a/idea/src/org/jetbrains/jet/codegen/ClassCodegen.java b/idea/src/org/jetbrains/jet/codegen/ClassCodegen.java index c7d6d88809f..97f0cd3dda7 100644 --- a/idea/src/org/jetbrains/jet/codegen/ClassCodegen.java +++ b/idea/src/org/jetbrains/jet/codegen/ClassCodegen.java @@ -59,7 +59,7 @@ public class ClassCodegen { v.anew(JetTypeMapper.TYPE_TYPEINFO); v.dup(); v.aconst(asmType); - v.aconst(isNullable); + v.iconst(isNullable?1:0); v.invokespecial("jet/typeinfo/TypeInfo", "", "(Ljava/lang/Class;Z)V"); } } diff --git a/idea/src/org/jetbrains/jet/codegen/ExpressionCodegen.java b/idea/src/org/jetbrains/jet/codegen/ExpressionCodegen.java index 3ec9cf112a7..fff6e384af8 100644 --- a/idea/src/org/jetbrains/jet/codegen/ExpressionCodegen.java +++ b/idea/src/org/jetbrains/jet/codegen/ExpressionCodegen.java @@ -1,21 +1,20 @@ package org.jetbrains.jet.codegen; import com.intellij.openapi.editor.Document; -import com.intellij.openapi.project.Project; import com.intellij.psi.*; -import com.intellij.psi.search.ProjectScope; import com.intellij.psi.tree.IElementType; import com.intellij.psi.util.PsiTreeUtil; import gnu.trove.THashSet; -import jet.Range; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.codegen.intrinsics.IntrinsicMethod; import org.jetbrains.jet.codegen.intrinsics.IntrinsicMethods; +import org.jetbrains.jet.lang.ErrorHandler; import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.BindingContextUtils; import org.jetbrains.jet.lang.resolve.constants.CompileTimeConstant; +import org.jetbrains.jet.lang.resolve.java.JavaClassDescriptor; import org.jetbrains.jet.lang.types.JetStandardClasses; import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.jet.lang.types.TypeProjection; @@ -32,31 +31,21 @@ import java.util.*; /** * @author max * @author yole + * @author alex.tkachman */ public class ExpressionCodegen extends JetVisitor { private static final String CLASS_OBJECT = "java/lang/Object"; private static final String CLASS_STRING = "java/lang/String"; public static final String CLASS_STRING_BUILDER = "java/lang/StringBuilder"; private static final String CLASS_COMPARABLE = "java/lang/Comparable"; - private static final String CLASS_ITERABLE = "java/lang/Iterable"; - private static final String CLASS_ITERATOR = "java/util/Iterator"; - private static final String CLASS_RANGE = "jet/Range"; private static final String CLASS_NO_PATTERN_MATCHED_EXCEPTION = "jet/NoPatternMatchedException"; private static final String CLASS_TYPE_CAST_EXCEPTION = "jet/TypeCastException"; - private static final String ITERABLE_ITERATOR_DESCRIPTOR = "()Ljava/util/Iterator;"; - private static final String ITERATOR_HASNEXT_DESCRIPTOR = "()Z"; - private static final String ITERATOR_NEXT_DESCRIPTOR = "()Ljava/lang/Object;"; - private static final Type OBJECT_TYPE = Type.getType(Object.class); - private static final Type INTEGER_TYPE = Type.getType(Integer.class); - private static final Type ITERATOR_TYPE = Type.getType(Iterator.class); private static final Type THROWABLE_TYPE = Type.getType(Throwable.class); private static final Type STRING_TYPE = Type.getObjectType(CLASS_STRING); - private static final Type RANGE_TYPE = Type.getType(Range.class); - private final Stack