Merge branch 'master' of ssh://git.labs.intellij.net/jet

This commit is contained in:
svtk
2011-10-18 16:58:38 +04:00
176 changed files with 4649 additions and 3660 deletions
Generated
+8
View File
@@ -26,6 +26,14 @@
<maximumStackSize value="2" />
<properties />
</buildFile>
<buildFile url="file://$PROJECT_DIR$/build.xml">
<additionalClassPath />
<antReference projectDefault="true" />
<customJdkName value="" />
<maximumHeapSize value="128" />
<maximumStackSize value="2" />
<properties />
</buildFile>
</component>
</project>
+1
View File
@@ -4,6 +4,7 @@
<modules>
<module fileurl="file://$PROJECT_DIR$/Jet.iml" filepath="$PROJECT_DIR$/Jet.iml" />
<module fileurl="file://$PROJECT_DIR$/compiler/backend/backend.iml" filepath="$PROJECT_DIR$/compiler/backend/backend.iml" />
<module fileurl="file://$PROJECT_DIR$/compiler/cli/cli.iml" filepath="$PROJECT_DIR$/compiler/cli/cli.iml" />
<module fileurl="file://$PROJECT_DIR$/examples/examples.iml" filepath="$PROJECT_DIR$/examples/examples.iml" />
<module fileurl="file://$PROJECT_DIR$/compiler/frontend/frontend.iml" filepath="$PROJECT_DIR$/compiler/frontend/frontend.iml" />
<module fileurl="file://$PROJECT_DIR$/compiler/frontend.java/frontend.java.iml" filepath="$PROJECT_DIR$/compiler/frontend.java/frontend.java.iml" />
+61
View File
@@ -0,0 +1,61 @@
<project name="Kotlin" default="dist">
<property name="output" value="${basedir}/dist"/>
<property name="build.number" value="snapshot"/>
<property name="output.name" value="kotlin-${build.number}"/>
<path id="classpath">
<fileset dir="${basedir}/ideaSDK" includes="*.jar"/>
<fileset dir="${basedir}/lib" includes="*.jar"/>
<pathelement path="${output}/classes/runtime"/>
</path>
<path id="sourcepath">
<dirset dir="${basedir}/compiler">
<include name="frontend/src"/>
<include name="frontend.java/src"/>
<include name="backend/src"/>
<include name="cli/src"/>
</dirset>
</path>
<target name="compileRT">
<mkdir dir="${output}/classes/runtime"/>
<javac destdir="${output}/classes/runtime">
<src path="${basedir}/stdlib/src"/>
<classpath refid="classpath"/>
</javac>
</target>
<target name="jarRT" depends="compileRT">
<jar destfile="${output}/kotlin-runtime.jar">
<fileset dir="${output}/classes/runtime"/>
</jar>
</target>
<target name="compile" depends="compileRT">
<mkdir dir="${output}/classes/compiler"/>
<javac destdir="${output}/classes/compiler">
<src refid="sourcepath"/>
<classpath refid="classpath"/>
</javac>
</target>
<target name="jar" depends="compile">
<jar destfile="${output}/kotlin-compiler.jar">
<fileset dir="${output}/classes/compiler"/>
<fileset dir="${basedir}/compiler/frontend/src" includes="jet/**"/>
</jar>
</target>
<target name="dist" depends="jarRT,jar">
<zip destfile="${output}/${output.name}.zip">
<zipfileset prefix="${output.name}/bin" filemode="755" dir="${basedir}/compiler/cli/bin"/>
<zipfileset prefix="${output.name}/lib" dir="${basedir}/ideaSDK"/>
<zipfileset prefix="${output.name}/lib" dir="${basedir}/lib"/>
<zipfileset prefix="${output.name}/lib" dir="${output}" includes="*.jar"/>
<zipfileset prefix="${output.name}/examples" dir="${basedir}/examples/src"/>
</zip>
</target>
</project>
@@ -40,10 +40,10 @@ public abstract class ClassBodyCodegen {
public void generate() {
generateDeclaration();
generateSyntheticParts();
generateClassBody();
generateSyntheticParts();
generateStaticInitializer();
v.visitEnd();
@@ -4,8 +4,6 @@ import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.objectweb.asm.ClassVisitor;
import org.objectweb.asm.Type;
import org.objectweb.asm.commons.InstructionAdapter;
/**
* @author max
@@ -25,7 +23,7 @@ public class ClassCodegen {
generateImplementation(parentContext, aClass, OwnerKind.IMPLEMENTATION);
final ClassContext contextForInners = parentContext.intoClass(descriptor, OwnerKind.IMPLEMENTATION);
final ClassContext contextForInners = parentContext.intoClass(null, descriptor, OwnerKind.IMPLEMENTATION);
for (JetDeclaration declaration : aClass.getDeclarations()) {
if (declaration instanceof JetClass && !(declaration instanceof JetEnumEntry)) {
generate(contextForInners, (JetClass) declaration);
@@ -36,11 +34,11 @@ public class ClassCodegen {
private void generateImplementation(ClassContext parentContext, JetClassOrObject aClass, OwnerKind kind) {
ClassDescriptor descriptor = state.getBindingContext().get(BindingContext.CLASS, aClass);
ClassVisitor v = state.forClassImplementation(descriptor);
new ImplementationBodyCodegen(aClass, parentContext.intoClass(descriptor, kind), v, state).generate();
new ImplementationBodyCodegen(aClass, parentContext.intoClass(null, descriptor, kind), v, state).generate();
if(aClass instanceof JetClass && ((JetClass)aClass).isTrait()) {
v = state.forTraitImplementation(descriptor);
new TraitImplBodyCodegen(aClass, parentContext.intoClass(descriptor, OwnerKind.TRAIT_IMPL), v, state).generate();
new TraitImplBodyCodegen(aClass, parentContext.intoClass(null, descriptor, OwnerKind.TRAIT_IMPL), v, state).generate();
}
}
@@ -1,6 +1,3 @@
/*
* @author max
*/
package org.jetbrains.jet.codegen;
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
@@ -14,18 +11,22 @@ import org.objectweb.asm.commons.InstructionAdapter;
import java.util.HashMap;
/*
* @author max
* @author alex.tkachman
*/
public class ClassContext {
public static final ClassContext STATIC = new ClassContext(null, OwnerKind.NAMESPACE, null, null, null);
private final DeclarationDescriptor contextType;
private final OwnerKind contextKind;
private final StackValue thisExpression;
private final ClassContext parentContext;
private final ClosureCodegen closure;
public final FunctionOrClosureCodegen closure;
private boolean thisWasUsed = false;
HashMap<JetType,Integer> typeInfoConstants;
public ClassContext(DeclarationDescriptor contextType, OwnerKind contextKind, StackValue thisExpression, ClassContext parentContext, ClosureCodegen closureCodegen) {
public ClassContext(DeclarationDescriptor contextType, OwnerKind contextKind, StackValue thisExpression, ClassContext parentContext, FunctionOrClosureCodegen closureCodegen) {
this.contextType = contextType;
this.contextKind = contextKind;
this.thisExpression = thisExpression;
@@ -60,11 +61,11 @@ public class ClassContext {
return new ClassContext(descriptor, OwnerKind.NAMESPACE, null, this, null);
}
public ClassContext intoClass(ClassDescriptor descriptor, OwnerKind kind) {
public ClassContext intoClass(FunctionOrClosureCodegen closure, ClassDescriptor descriptor, OwnerKind kind) {
final StackValue thisValue;
thisValue = StackValue.local(0, JetTypeMapper.TYPE_OBJECT);
return new ClassContext(descriptor, kind, thisValue, this, null);
return new ClassContext(descriptor, kind, thisValue, this, closure);
}
public ClassContext intoFunction(FunctionDescriptor descriptor) {
@@ -140,13 +141,21 @@ public class ClassContext {
}
public StackValue lookupInContext(DeclarationDescriptor d, InstructionAdapter v) {
final ClosureCodegen top = closure;
final FunctionOrClosureCodegen top = closure;
if (top != null) {
final StackValue answer = top.lookupInContext(d);
if (answer != null) return answer;
final StackValue thisContext = getThisExpression();
thisContext.put(thisContext.type, v);
if(thisContext instanceof StackValue.Local) {
}
else if(thisContext instanceof StackValue.InstanceField) {
StackValue.InstanceField instanceField = (StackValue.InstanceField) thisContext;
v.getfield(instanceField.owner, instanceField.name, instanceField.type.getDescriptor());
}
else {
throw new UnsupportedOperationException();
}
}
return parentContext != null ? parentContext.lookupInContext(d, v) : null;
@@ -26,19 +26,10 @@ import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
public class ClosureCodegen {
public final GenerationState state;
private final ExpressionCodegen exprContext;
private final ClassContext context;
private ClassVisitor cv = null;
public String name = null;
private Map<DeclarationDescriptor, EnclosedValueDescriptor> closure = new LinkedHashMap<DeclarationDescriptor, EnclosedValueDescriptor>();
public class ClosureCodegen extends FunctionOrClosureCodegen {
public ClosureCodegen(GenerationState state, ExpressionCodegen exprContext, ClassContext context) {
this.state = state;
this.exprContext = exprContext;
this.context = context;
super(exprContext, context, state);
}
public static Method erasedInvokeSignature(FunctionDescriptor fd) {
@@ -57,31 +48,6 @@ public class ClosureCodegen {
return state.getTypeMapper().mapSignature("invoke", fd);
}
public StackValue lookupInContext(DeclarationDescriptor d) {
if (d instanceof VariableDescriptor) {
VariableDescriptor vd = (VariableDescriptor) d;
EnclosedValueDescriptor answer = closure.get(vd);
if (answer != null) return answer.getInnerValue();
final int idx = exprContext.lookupLocal(vd);
if (idx < 0) return null;
final Type type = state.getTypeMapper().mapType(vd.getOutType());
StackValue outerValue = StackValue.local(idx, type);
final String fieldName = "$" + (closure.size() + 1);
StackValue innerValue = StackValue.field(type, name, fieldName, false);
cv.visitField(Opcodes.ACC_PUBLIC, fieldName, type.getDescriptor(), null, null);
answer = new EnclosedValueDescriptor(d, innerValue, outerValue);
closure.put(d, answer);
return innerValue;
}
return null;
}
public GeneratedAnonymousClassDescriptor gen(JetFunctionLiteralExpression fun) {
final Pair<String, ClassVisitor> nameAndVisitor = state.forAnonymousSubclass(fun);
@@ -120,7 +86,7 @@ public class ClosureCodegen {
final Method constructor = generateConstructor(funClass, captureThis, funDescriptor.getReturnType());
if (captureThis) {
cv.visitField(Opcodes.ACC_PRIVATE, "this$0", enclosingType.getDescriptor(), null, null);
cv.visitField(0, "this$0", enclosingType.getDescriptor(), null, null);
}
cv.visitEnd();
@@ -192,7 +158,9 @@ public class ClosureCodegen {
}
for (DeclarationDescriptor descriptor : closure.keySet()) {
argTypes[i++] = state.getTypeMapper().mapType(((VariableDescriptor) descriptor).getOutType());
final Type sharedVarType = exprContext.getSharedVarType(descriptor);
final Type type = sharedVarType != null ? sharedVarType : state.getTypeMapper().mapType(((VariableDescriptor) descriptor).getOutType());
argTypes[i++] = type;
}
final Method constructor = new Method("<init>", Type.VOID_TYPE, argTypes);
@@ -94,7 +94,7 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> {
public StackValue genQualified(StackValue receiver, JetElement selector) {
markLineNumber(selector);
return selector.visit(this, receiver);
return selector.accept(this, receiver);
}
public StackValue gen(JetElement expr) {
@@ -551,7 +551,7 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> {
final Method cons = closure.getConstructor();
if (closure.isCaptureThis()) {
thisToStack();
v.load(0, JetTypeMapper.TYPE_OBJECT);
}
for (int i = 0; i < closure.getArgs().size(); i++) {
@@ -566,16 +566,43 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> {
@Override
public StackValue visitObjectLiteralExpression(JetObjectLiteralExpression expression, StackValue receiver) {
GeneratedAnonymousClassDescriptor descriptor = state.generateObjectLiteral(expression, this, context);
Type type = Type.getObjectType(descriptor.getClassname());
FunctionOrClosureCodegen closureCodegen = new FunctionOrClosureCodegen(this, context, state);
GeneratedAnonymousClassDescriptor closure = state.generateObjectLiteral(expression, closureCodegen);
Type type = Type.getObjectType(closure.getClassname());
v.anew(type);
v.dup();
v.load(0, JetTypeMapper.TYPE_OBJECT);
String jvmDescriptor = descriptor.getConstructor().getDescriptor().replace("(","(" + typeMapper.jetImplementationType((ClassDescriptor) contextType()));
v.invokespecial(descriptor.getClassname(), "<init>", jvmDescriptor);
return StackValue.onStack(type);
final List<Type> consArgTypes = new LinkedList<Type>(Arrays.asList(closure.getConstructor().getArgumentTypes()));
if (consArgTypes.size() > 0) {
v.load(0, JetTypeMapper.TYPE_OBJECT);
}
for (DeclarationDescriptor descriptor : closureCodegen.closure.keySet()) {
final Type sharedVarType = getSharedVarType(descriptor);
consArgTypes.add(sharedVarType != null ? sharedVarType : state.getTypeMapper().mapType(((VariableDescriptor) descriptor).getOutType()));
final EnclosedValueDescriptor valueDescriptor = closureCodegen.closure.get(descriptor);
valueDescriptor.getOuterValue().put(sharedVarType, v);
}
Method cons = new Method("<init>", Type.VOID_TYPE, consArgTypes.toArray(new Type[consArgTypes.size()]));
v.invokespecial(closure.getClassname(), "<init>", cons.getDescriptor());
return StackValue.onStack(Type.getObjectType(closure.getClassname()));
}
Type getSharedVarType(DeclarationDescriptor variableDescriptor) {
if(!(variableDescriptor instanceof VariableDescriptor))
return null;
Boolean aBoolean = bindingContext.get(BindingContext.MUST_BE_WRAPPED_IN_A_REF, (VariableDescriptor) variableDescriptor);
if (aBoolean != null && aBoolean) {
JetType outType = ((VariableDescriptor) variableDescriptor).getOutType();
return StackValue.sharedTypeForType(typeMapper.mapType(outType));
}
else {
return null;
}
}
private StackValue generateBlock(List<JetElement> statements) {
Label blockStart = new Label();
v.mark(blockStart);
@@ -584,7 +611,9 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> {
if (statement instanceof JetProperty) {
final VariableDescriptor variableDescriptor = bindingContext.get(BindingContext.VARIABLE, statement);
assert variableDescriptor != null;
final Type type = typeMapper.mapType(variableDescriptor.getOutType());
final Type sharedVarType = getSharedVarType(variableDescriptor);
final Type type = sharedVarType != null ? sharedVarType : typeMapper.mapType(variableDescriptor.getOutType());
myMap.enter(variableDescriptor, type.getSize());
}
}
@@ -608,10 +637,17 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> {
JetProperty var = (JetProperty) statement;
VariableDescriptor variableDescriptor = bindingContext.get(BindingContext.VARIABLE, var);
assert variableDescriptor != null;
Type outType = typeMapper.mapType(variableDescriptor.getOutType());
int index = myMap.leave(variableDescriptor);
v.visitLocalVariable(var.getName(), outType.getDescriptor(), null, blockStart, blockEnd, index);
final Type sharedVarType = getSharedVarType(variableDescriptor);
final Type type = sharedVarType != null ? sharedVarType : typeMapper.mapType(variableDescriptor.getOutType());
if(sharedVarType != null) {
v.aconst(null);
v.store(index, JetTypeMapper.TYPE_OBJECT);
}
v.visitLocalVariable(var.getName(), type.getDescriptor(), null, blockStart, blockEnd, index);
}
}
@@ -699,8 +735,14 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> {
else {
int index = lookupLocal(descriptor);
if (index >= 0) {
Type sharedVarType = getSharedVarType(descriptor);
final JetType outType = ((VariableDescriptor) descriptor).getOutType();
return StackValue.local(index, typeMapper.mapType(outType));
if(sharedVarType != null) {
return StackValue.shared(index, typeMapper.mapType(outType));
}
else {
return StackValue.local(index, typeMapper.mapType(outType));
}
}
else if (descriptor instanceof PropertyDescriptor) {
final PropertyDescriptor propertyDescriptor = (PropertyDescriptor) descriptor;
@@ -785,6 +827,12 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> {
if (value == null) {
throw new UnsupportedOperationException("don't know how to generate reference " + descriptor);
}
if(value instanceof StackValue.FieldForSharedVar) {
StackValue.FieldForSharedVar fieldForSharedVar = (StackValue.FieldForSharedVar) value;
Type sharedType = StackValue.sharedTypeForType(value.type);
v.visitFieldInsn(Opcodes.GETFIELD, fieldForSharedVar.owner, fieldForSharedVar.name, sharedType.getDescriptor());
}
return value;
}
}
@@ -1617,12 +1665,27 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> {
assert index >= 0;
final Type sharedVarType = getSharedVarType(variableDescriptor);
assert variableDescriptor != null;
Type varType = typeMapper.mapType(variableDescriptor.getOutType());
if(sharedVarType != null) {
v.anew(sharedVarType);
v.dup();
v.invokespecial(sharedVarType.getInternalName(), "<init>", "()V");
v.store(index, JetTypeMapper.TYPE_OBJECT);
}
JetExpression initializer = property.getInitializer();
if (initializer != null) {
assert variableDescriptor != null;
Type type = typeMapper.mapType(variableDescriptor.getOutType());
gen(initializer, type);
v.store(index, type);
if(sharedVarType == null) {
gen(initializer, varType);
v.store(index, varType);
}
else {
v.load(index, JetTypeMapper.TYPE_OBJECT);
gen(initializer, varType);
v.putfield(sharedVarType.getInternalName(), "ref", sharedVarType == JetTypeMapper.TYPE_SHARED_VAR ? "Ljava/lang/Object;" : varType.getDescriptor());
}
}
return StackValue.none();
}
@@ -3,6 +3,7 @@ package org.jetbrains.jet.codegen;
import gnu.trove.TObjectIntHashMap;
import gnu.trove.TObjectIntIterator;
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import org.jetbrains.jet.lang.resolve.BindingContext;
import java.util.ArrayList;
import java.util.List;
@@ -98,6 +98,23 @@ public class FunctionCodegen {
iv.areturn(jvmSignature.getReturnType());
}
else {
for (int i = 0; i < paramDescrs.size(); i++) {
ValueParameterDescriptor parameter = paramDescrs.get(i);
Type sharedVarType = codegen.getSharedVarType(parameter);
Type localVarType = state.getTypeMapper().mapType(parameter.getOutType());
if(sharedVarType != null) {
int index = frameMap.getIndex(parameter);
mv.visitTypeInsn(Opcodes.NEW, sharedVarType.getInternalName());
mv.visitInsn(Opcodes.DUP);
mv.visitInsn(Opcodes.DUP);
mv.visitMethodInsn(Opcodes.INVOKESPECIAL, sharedVarType.getInternalName(), "<init>", "()V");
mv.visitVarInsn(localVarType.getOpcode(Opcodes.ILOAD), index);
mv.visitFieldInsn(Opcodes.PUTFIELD, sharedVarType.getInternalName(), "ref", StackValue.refType(localVarType).getDescriptor());
mv.visitVarInsn(sharedVarType.getOpcode(Opcodes.ISTORE), index);
}
}
codegen.returnExpression(bodyExpressions);
}
mv.visitMaxs(0, 0);
@@ -0,0 +1,57 @@
package org.jetbrains.jet.codegen;
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import org.jetbrains.jet.lang.descriptors.VariableDescriptor;
import org.objectweb.asm.ClassVisitor;
import org.objectweb.asm.Opcodes;
import org.objectweb.asm.Type;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* @author alex.tkachman
*/
public class FunctionOrClosureCodegen {
public final GenerationState state;
protected final ExpressionCodegen exprContext;
protected final ClassContext context;
protected ClassVisitor cv = null;
public String name = null;
protected Map<DeclarationDescriptor, EnclosedValueDescriptor> closure = new LinkedHashMap<DeclarationDescriptor, EnclosedValueDescriptor>();
public FunctionOrClosureCodegen(ExpressionCodegen exprContext, ClassContext context, GenerationState state) {
this.exprContext = exprContext;
this.context = context;
this.state = state;
}
public StackValue lookupInContext(DeclarationDescriptor d) {
if (d instanceof VariableDescriptor) {
VariableDescriptor vd = (VariableDescriptor) d;
EnclosedValueDescriptor answer = closure.get(vd);
if (answer != null) return answer.getInnerValue();
final int idx = exprContext.lookupLocal(vd);
if (idx < 0) return null;
final Type sharedVarType = exprContext.getSharedVarType(vd);
Type localType = state.getTypeMapper().mapType(vd.getOutType());
final Type type = sharedVarType != null ? sharedVarType : localType;
StackValue outerValue = StackValue.local(idx, type);
final String fieldName = "$" + (closure.size() + 1); // + "$" + vd.getName();
StackValue innerValue = sharedVarType != null ? StackValue.fieldForSharedVar(localType, name, fieldName) : StackValue.field(type, name, fieldName, false);
cv.visitField(Opcodes.ACC_PUBLIC, fieldName, type.getDescriptor(), null, null);
answer = new EnclosedValueDescriptor(d, innerValue, outerValue);
closure.put(d, answer);
return innerValue;
}
return null;
}
}
@@ -9,6 +9,7 @@ import com.intellij.util.containers.Stack;
import org.jetbrains.jet.codegen.intrinsics.IntrinsicMethods;
import org.jetbrains.jet.lang.cfg.pseudocode.JetControlFlowDataTraceFactory;
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
import org.jetbrains.jet.lang.descriptors.ConstructorDescriptor;
import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.AnalyzingUtils;
import org.jetbrains.jet.lang.resolve.BindingContext;
@@ -120,13 +121,19 @@ public class GenerationState {
}
}
public GeneratedAnonymousClassDescriptor generateObjectLiteral(JetObjectLiteralExpression literal, ExpressionCodegen context, ClassContext classContext) {
Pair<String, ClassVisitor> nameAndVisitor = forAnonymousSubclass(literal.getObjectDeclaration());
public GeneratedAnonymousClassDescriptor generateObjectLiteral(JetObjectLiteralExpression literal, FunctionOrClosureCodegen closure) {
JetObjectDeclaration objectDeclaration = literal.getObjectDeclaration();
Pair<String, ClassVisitor> nameAndVisitor = forAnonymousSubclass(objectDeclaration);
final ClassContext objectContext = classContext.intoClass(getBindingContext().get(BindingContext.CLASS, literal.getObjectDeclaration()), OwnerKind.IMPLEMENTATION);
closure.cv = nameAndVisitor.getSecond();
closure.name = nameAndVisitor.getFirst();
final ClassContext objectContext = closure.context.intoClass(closure, getBindingContext().get(BindingContext.CLASS, objectDeclaration), OwnerKind.IMPLEMENTATION);
new ImplementationBodyCodegen(literal.getObjectDeclaration(), objectContext, nameAndVisitor.getSecond(), this).generate();
return new GeneratedAnonymousClassDescriptor(nameAndVisitor.first, new Method("<init>", "()V"), false);
new ImplementationBodyCodegen(objectDeclaration, objectContext, nameAndVisitor.getSecond(), this).generate();
ConstructorDescriptor constructorDescriptor = closure.state.getBindingContext().get(BindingContext.CONSTRUCTOR, objectDeclaration);
CallableMethod callableMethod = closure.state.getTypeMapper().mapToCallableMethod(constructorDescriptor, OwnerKind.IMPLEMENTATION);
return new GeneratedAnonymousClassDescriptor(nameAndVisitor.first, callableMethod.getSignature(), false);
}
public static void prepareAnonymousClasses(JetElement aClass, final JetTypeMapper typeMapper) {
@@ -225,6 +225,22 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
callableMethod = state.getTypeMapper().mapToCallableMethod(constructorDescriptor, kind);
method = callableMethod.getSignature();
}
int firstClosureIndex = -1;
if(context.closure != null) {
final List<Type> consArgTypes = new LinkedList<Type>(Arrays.asList(method.getArgumentTypes()));
firstClosureIndex = consArgTypes.size()+1;
Map<DeclarationDescriptor, EnclosedValueDescriptor> closure = context.closure.closure;
for (DeclarationDescriptor descriptor : closure.keySet()) {
final Type sharedVarType = context.closure.exprContext.getSharedVarType(descriptor);
consArgTypes.add(sharedVarType != null ? sharedVarType : state.getTypeMapper().mapType(((VariableDescriptor) descriptor).getOutType()));
}
method = new Method("<init>", Type.VOID_TYPE, consArgTypes.toArray(new Type[consArgTypes.size()]));
}
int flags = Opcodes.ACC_PUBLIC; // TODO
final MethodVisitor mv = v.visitMethod(flags, "<init>", method.getDescriptor(), null, null);
mv.visitCode();
@@ -300,7 +316,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
iv.putfield(classname, delegateField, fieldDesc);
JetClass superClass = (JetClass) state.getBindingContext().get(BindingContext.DESCRIPTOR_TO_DECLARATION, superClassDescriptor);
final ClassContext delegateContext = context.intoClass(superClassDescriptor,
final ClassContext delegateContext = context.intoClass(null, superClassDescriptor,
new OwnerKind.DelegateKind(StackValue.field(fieldType, classname, delegateField, false),
JetTypeMapper.jvmNameForInterface(superClassDescriptor)));
generateDelegates(superClass, delegateContext, overridden);
@@ -322,6 +338,17 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
generateTypeInfoInitializer(frameMap.getFirstTypeParameter(), frameMap.getTypeParameterCount(), iv);
}
if(context.closure != null) {
Map<DeclarationDescriptor, EnclosedValueDescriptor> closure = context.closure.closure;
int k = 0;
for (DeclarationDescriptor varDescr : closure.keySet()) {
final Type sharedVarType = context.closure.exprContext.getSharedVarType(varDescr);
iv.load(0, JetTypeMapper.TYPE_OBJECT);
iv.load(firstClosureIndex + k, StackValue.refType(sharedVarType));
iv.putfield(state.getTypeMapper().jvmName(descriptor, OwnerKind.IMPLEMENTATION), "$" + (k+1), sharedVarType.getDescriptor());
}
}
generateInitializers(codegen, iv);
generateTraitMethods(codegen);
@@ -59,6 +59,15 @@ public class JetTypeMapper {
public static final Type TYPE_FUNCTION1 = Type.getObjectType("jet/Function1");
public static final Type TYPE_ITERATOR = Type.getObjectType("jet/Iterator");
public static final Type TYPE_INT_RANGE = Type.getObjectType("jet/IntRange");
public static final Type TYPE_SHARED_VAR = Type.getObjectType("jet/refs/SharedVar$Object");
public static final Type TYPE_SHARED_INT = Type.getObjectType("jet/refs/SharedVar$Int");
public static final Type TYPE_SHARED_DOUBLE = Type.getObjectType("jet/refs/SharedVar$Double");
public static final Type TYPE_SHARED_FLOAT = Type.getObjectType("jet/refs/SharedVar$Float");
public static final Type TYPE_SHARED_BYTE = Type.getObjectType("jet/refs/SharedVar$Byte");
public static final Type TYPE_SHARED_SHORT = Type.getObjectType("jet/refs/SharedVar$Short");
public static final Type TYPE_SHARED_CHAR = Type.getObjectType("jet/refs/SharedVar$Char");
public static final Type TYPE_SHARED_LONG = Type.getObjectType("jet/refs/SharedVar$Long");
public static final Type TYPE_SHARED_BOOLEAN = Type.getObjectType("jet/refs/SharedVar$Boolean");
public JetTypeMapper(JetStandardLibrary standardLibrary, BindingContext bindingContext) {
this.standardLibrary = standardLibrary;
@@ -11,6 +11,7 @@ import org.objectweb.asm.commons.Method;
/**
* @author yole
* @author alex.tkachman
*/
public abstract class StackValue {
public final Type type;
@@ -59,6 +60,10 @@ public abstract class StackValue {
return new Local(index, type);
}
public static StackValue shared(int index, Type type) {
return new Shared(index, type);
}
public static StackValue onStack(Type type) {
return type == Type.VOID_TYPE ? none() : new OnStack(type);
}
@@ -225,7 +230,11 @@ public abstract class StackValue {
public static StackValue none() {
return None.INSTANCE;
}
public static StackValue fieldForSharedVar(Type type, String name, String fieldName) {
return new FieldForSharedVar(type, name, fieldName);
}
private static class None extends StackValue {
public static None INSTANCE = new None();
private None() {
@@ -496,9 +505,9 @@ public abstract class StackValue {
}
private static class Field extends StackValue {
private final String owner;
private final String name;
static class Field extends StackValue {
final String owner;
final String name;
private final boolean isStatic;
public Field(Type type, String owner, String name, boolean isStatic) {
@@ -531,9 +540,9 @@ public abstract class StackValue {
}
}
private static class InstanceField extends StackValue {
private final String owner;
private final String name;
static class InstanceField extends StackValue {
final String owner;
final String name;
public InstanceField(Type type, String owner, String name) {
super(type);
@@ -625,4 +634,106 @@ public abstract class StackValue {
generator.gen(expression, type);
}
}
public static class Shared extends StackValue {
private final int index;
public Shared(int index, Type type) {
super(type);
this.index = index;
}
@Override
public void put(Type type, InstructionAdapter v) {
v.load(index, JetTypeMapper.TYPE_OBJECT);
Type refType = refType(this.type);
Type sharedType = sharedTypeForType(this.type);
v.visitFieldInsn(Opcodes.GETFIELD, sharedType.getInternalName(), "ref", refType.getDescriptor());
StackValue.onStack(refType).coerce(this.type, v);
StackValue.onStack(this.type).coerce(type, v);
}
@Override
public void store(InstructionAdapter v) {
v.load(index, JetTypeMapper.TYPE_OBJECT);
v.swap();
Type refType = refType(this.type);
Type sharedType = sharedTypeForType(this.type);
v.visitFieldInsn(Opcodes.PUTFIELD, sharedType.getInternalName(), "ref", refType.getDescriptor());
}
}
public static Type sharedTypeForType(Type type) {
switch(type.getSort()) {
case Type.OBJECT:
case Type.ARRAY:
return JetTypeMapper.TYPE_SHARED_VAR;
case Type.BYTE:
return JetTypeMapper.TYPE_SHARED_BYTE;
case Type.SHORT:
return JetTypeMapper.TYPE_SHARED_SHORT;
case Type.CHAR:
return JetTypeMapper.TYPE_SHARED_CHAR;
case Type.INT:
return JetTypeMapper.TYPE_SHARED_INT;
case Type.BOOLEAN:
return JetTypeMapper.TYPE_SHARED_BOOLEAN;
case Type.FLOAT:
return JetTypeMapper.TYPE_SHARED_FLOAT;
case Type.DOUBLE:
return JetTypeMapper.TYPE_SHARED_DOUBLE;
default:
throw new UnsupportedOperationException();
}
}
public static Type refType(Type type) {
if(type.getSort() == Type.OBJECT || type.getSort() == Type.ARRAY)
return JetTypeMapper.TYPE_OBJECT;
return type;
}
static class FieldForSharedVar extends StackValue {
final String owner;
final String name;
public FieldForSharedVar(Type type, String owner, String name) {
super(type);
this.owner = owner;
this.name = name;
}
@Override
public void dupReceiver(InstructionAdapter v, int below) {
if (below == 1) {
v.dupX1();
}
else {
v.dup();
}
}
@Override
public void put(Type type, InstructionAdapter v) {
Type sharedType = sharedTypeForType(this.type);
Type refType = refType(this.type);
v.visitFieldInsn(Opcodes.GETFIELD, sharedType.getInternalName(), "ref", refType.getDescriptor());
StackValue.onStack(refType).coerce(this.type, v);
StackValue.onStack(this.type).coerce(type, v);
}
@Override
public void store(InstructionAdapter v) {
v.visitFieldInsn(Opcodes.PUTFIELD, sharedTypeForType(type).getInternalName(), "ref", refType(type).getDescriptor());
}
}
}
+98
View File
@@ -0,0 +1,98 @@
#!/bin/bash --posix
#
##############################################################################
# Copyright 2002-2011, LAMP/EPFL
# Copyright 2011, JetBrains
#
# This is free software; see the distribution for copying conditions.
# There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
##############################################################################
cygwin=false;
case "`uname`" in
CYGWIN*) cygwin=true ;;
esac
# Finding the root folder for this Kotlin distribution
SOURCE=$0;
SCRIPT=`basename "$SOURCE"`;
while [ -h "$SOURCE" ]; do
SCRIPT=`basename "$SOURCE"`;
LOOKUP=`ls -ld "$SOURCE"`;
TARGET=`expr "$LOOKUP" : '.*-> \(.*\)$'`;
if expr "${TARGET:-.}/" : '/.*/$' > /dev/null; then
SOURCE=${TARGET:-.};
else
SOURCE=`dirname "$SOURCE"`/${TARGET:-.};
fi;
done;
# see #2092
KOTLIN_HOME=`dirname "$SOURCE"`
KOTLIN_HOME=`cd "$KOTLIN_HOME"; pwd -P`
KOTLIN_HOME=`cd "$KOTLIN_HOME"/..; pwd`
# Remove spaces from KOTLIN_HOME on windows
if $cygwin; then
KOTLIN_HOME=`cygpath --windows --short-name "$KOTLIN_HOME"`
KOTLIN_HOME=`cygpath --unix "$KOTLIN_HOME"`
fi
# Constructing the extension classpath
TOOL_CLASSPATH=""
if [ -z "$TOOL_CLASSPATH" ] ; then
for ext in "$KOTLIN_HOME"/lib/* ; do
if [ -z "$TOOL_CLASSPATH" ] ; then
TOOL_CLASSPATH="$ext"
else
TOOL_CLASSPATH="$TOOL_CLASSPATH:$ext"
fi
done
fi
[ -n "$JAVA_OPTS" ] || JAVA_OPTS="-Xmx256M -Xms32M"
# break out -D and -J options and add them to JAVA_OPTS as well
# so they reach the underlying JVM in time to do some good. The
# -D options will be available as system properties.
declare -a java_args
declare -a kotlin_args
while [ $# -gt 0 ]; do
case "$1" in
-D*)
# pass to kotlin as well: otherwise we lose it sometimes when we
# need it, e.g. communicating with a server compiler.
java_args=("${java_args[@]}" "$1")
kotlin_args=("${kotlin_args[@]}" "$1")
shift
;;
-J*)
# as with -D, pass to scala even though it will almost
# never be used.
java_args=("${java_args[@]}" "${1:2}")
kotlin_args=("${kotlin_args[@]}" "$1")
shift
;;
*)
kotlin_args=("${kotlin_args[@]}" "$1")
shift
;;
esac
done
# reset "$@" to the remaining args
set -- "${kotlin_args[@]}"
if [ -z "$JAVACMD" -a -n "$JAVA_HOME" -a -x "$JAVA_HOME/bin/java" ]; then
JAVACMD="$JAVA_HOME/bin/java"
fi
CPSELECT="-cp "
"${JAVACMD:=java}" \
$JAVA_OPTS \
"${java_args[@]}" \
${CPSELECT}${TOOL_CLASSPATH} \
org.jetbrains.jet.cli.KotlinCompiler "$@"
+51
View File
@@ -0,0 +1,51 @@
rem based on scalac.bat from the Scala distribution
rem ##########################################################################
rem # Copyright 2002-2011, LAMP/EPFL
rem # Copyright 2011, JetBrains
rem #
rem # This is free software; see the distribution for copying conditions.
rem # There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
rem # PARTICULAR PURPOSE.
rem ##########################################################################
@echo off
@setlocal
call :set_home
if not "%JAVA_HOME%"=="" (
if exist "%JAVA_HOME%\bin\java.exe" set "_JAVACMD=%JAVA_HOME%\bin\java.exe"
)
if "%_JAVACMD%"=="" set _JAVACMD=java
rem We use the value of the JAVA_OPTS environment variable if defined
set _JAVA_OPTS=-Xmx256M -Xms32M
set _TOOL_CLASSPATH=
if "%_TOOL_CLASSPATH%"=="" (
for %%f in ("%_KOTLIN_HOME%\lib\*") do call :add_cpath "%%f"
for /d %%f in ("%_KOTLIN_HOME%\lib\*") do call :add_cpath "%%f"
)
"%_JAVACMD%" %_JAVA_OPTS% -cp "%_TOOL_CLASSPATH%" org.jetbrains.jet.cli.KotlinCompiler %*
goto end
rem ##########################################################################
rem # subroutines
:add_cpath
if "%_TOOL_CLASSPATH%"=="" (
set _TOOL_CLASSPATH=%~1
) else (
set _TOOL_CLASSPATH=%_TOOL_CLASSPATH%;%~1
)
goto :eof
:set_home
set _BIN_DIR=
for %%i in (%~sf0) do set _BIN_DIR=%_BIN_DIR%%%~dpsi
set _KOTLIN_HOME=%_BIN_DIR%..
goto :eof
:end
@endlocal
+15
View File
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="jdk" jdkName="IDEA 10.x" jdkType="IDEA JDK" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module" module-name="backend" />
<orderEntry type="module" module-name="frontend" />
<orderEntry type="module" module-name="frontend.java" />
</component>
</module>
@@ -0,0 +1,123 @@
package org.jetbrains.jet.cli;
import com.google.common.collect.Lists;
import com.intellij.core.JavaCoreEnvironment;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiManager;
import org.jetbrains.jet.codegen.ClassFileFactory;
import org.jetbrains.jet.codegen.GenerationState;
import org.jetbrains.jet.lang.cfg.pseudocode.JetControlFlowDataTraceFactory;
import org.jetbrains.jet.lang.diagnostics.Diagnostic;
import org.jetbrains.jet.lang.parsing.JetParserDefinition;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.psi.JetNamespace;
import org.jetbrains.jet.lang.resolve.AnalyzingUtils;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.java.JavaDefaultImports;
import org.jetbrains.jet.plugin.JetFileType;
import java.io.File;
import java.io.IOException;
import java.util.List;
/**
* @author yole
*/
public class KotlinCompiler {
public static void main(String[] args) {
System.setProperty("java.awt.headless", "true");
if (args.length < 1) {
System.out.println("Usage: KotlinCompiler <filename>");
return;
}
String javaHome = System.getenv("JAVA_HOME");
if (javaHome == null) {
System.out.println("JAVA_HOME environment variable needs to be defined");
return;
}
File rtJar = findRtJar(javaHome);
if (rtJar == null || !rtJar.exists()) {
System.out.print("No rt.jar found under JAVA_HOME");
return;
}
Disposable root = new Disposable() {
@Override
public void dispose() {
}
};
JavaCoreEnvironment environment = new JavaCoreEnvironment(root);
environment.addToClasspath(rtJar);
environment.registerFileType(JetFileType.INSTANCE, "kt");
environment.registerParserDefinition(new JetParserDefinition());
VirtualFile vFile = environment.getLocalFileSystem().findFileByPath(args [0]);
if (vFile == null) {
System.out.print("File not found: " + args[0]);
return;
}
Project project = environment.getProject();
GenerationState generationState = new GenerationState(project, false);
List<JetNamespace> namespaces = Lists.newArrayList();
PsiFile psiFile = PsiManager.getInstance(project).findFile(vFile);
if (psiFile instanceof JetFile) {
namespaces.add(((JetFile) psiFile).getRootNamespace());
}
else {
System.out.print("Not a Kotlin file: " + vFile.getPath());
return;
}
BindingContext bindingContext = AnalyzingUtils.getInstance(JavaDefaultImports.JAVA_DEFAULT_IMPORTS).analyzeNamespaces(project, namespaces, JetControlFlowDataTraceFactory.EMPTY);
boolean errors = false;
for (Diagnostic diagnostic : bindingContext.getDiagnostics()) {
switch (diagnostic.getSeverity()) {
case ERROR:
errors = true;
report(diagnostic);
break;
case INFO:
report(diagnostic);
break;
case WARNING:
report(diagnostic);
break;
}
}
if (!errors) {
generationState.compileCorrectNamespaces(bindingContext, namespaces);
final ClassFileFactory factory = generationState.getFactory();
List<String> files = factory.files();
for (String file : files) {
File target = new File(vFile.getParent().getPath(), file);
try {
FileUtil.writeToFile(target, factory.asBytes(file));
System.out.println("Generated classfile: " + target);
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}
}
private static void report(Diagnostic diagnostic) {
System.out.println(diagnostic.getMessage());
}
private static File findRtJar(String javaHome) {
File rtJar = new File(javaHome, "jre/lib/rt.jar");
if (rtJar.exists()) {
return rtJar;
}
return null;
}
}
@@ -3,8 +3,11 @@ package org.jetbrains.jet.lang;
import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.cfg.pseudocode.JetControlFlowDataTraceFactory;
import org.jetbrains.jet.lang.resolve.*;
import org.jetbrains.jet.lang.types.*;
import org.jetbrains.jet.lang.resolve.BindingTrace;
import org.jetbrains.jet.lang.resolve.ClassDescriptorResolver;
import org.jetbrains.jet.lang.types.JetStandardLibrary;
import org.jetbrains.jet.lang.types.JetTypeChecker;
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices;
/**
* @author abreslav
@@ -37,13 +40,12 @@ public class JetSemanticServices {
}
@NotNull
public JetTypeInferrer.Services getTypeInferrerServices(@NotNull BindingTrace trace) {
return new JetTypeInferrer(this).getServices(trace);
public ExpressionTypingServices getTypeInferrerServices(@NotNull BindingTrace trace) {
return new ExpressionTypingServices(this, trace);
}
@NotNull
public JetTypeChecker getTypeChecker() {
return typeChecker;
}
}
@@ -10,7 +10,7 @@ import org.jetbrains.jet.lang.resolve.BindingContextUtils;
import org.jetbrains.jet.lang.resolve.BindingTrace;
import org.jetbrains.jet.lang.types.JetStandardClasses;
import org.jetbrains.jet.lang.types.JetType;
import org.jetbrains.jet.lang.types.JetTypeInferrer;
import org.jetbrains.jet.lang.types.expressions.OperatorConventions;
import org.jetbrains.jet.lexer.JetTokens;
import java.util.*;
@@ -157,7 +157,7 @@ public class JetControlFlowProcessor {
builder.unsupported(expression); // TODO
}
}
else if (JetTypeInferrer.assignmentOperationNames.containsKey(operationType)) {
else if (OperatorConventions.ASSIGNMENT_OPERATIONS.containsKey(operationType)) {
JetExpression left = JetPsiUtil.deparenthesize(expression.getLeft());
if (left != null) {
value(left, false);
@@ -8,6 +8,7 @@ import org.jetbrains.jet.lang.resolve.scopes.JetScope;
import org.jetbrains.jet.lang.resolve.scopes.LazyScopeAdapter;
import org.jetbrains.jet.lang.types.*;
import org.jetbrains.jet.resolve.DescriptorRenderer;
import org.jetbrains.jet.util.lazy.LazyValue;
import java.util.Collections;
import java.util.List;
@@ -22,7 +22,7 @@ public class JetAnnotatedExpression extends JetExpression {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitAnnotatedExpression(this, data);
}
@@ -20,7 +20,7 @@ public class JetAnnotation extends JetElement {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitAnnotation(this, data);
}
@@ -22,7 +22,7 @@ public class JetAnnotationEntry extends JetElement implements JetCallElement {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitAnnotationEntry(this, data);
}
@@ -32,7 +32,7 @@ public class JetArrayAccessExpression extends JetReferenceExpression {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitArrayAccessExpression(this, data);
}
@@ -21,7 +21,7 @@ public class JetBinaryExpression extends JetExpression {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitBinaryExpression(this, data);
}
@@ -20,7 +20,7 @@ public class JetBinaryExpressionWithTypeRHS extends JetExpression {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitBinaryWithTypeRHSExpression(this, data);
}
@@ -29,7 +29,7 @@ public class JetBindingPattern extends JetPattern {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitBindingPattern(this, data);
}
}
@@ -20,7 +20,7 @@ public class JetBlockExpression extends JetExpression {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitBlockExpression(this, data);
}
@@ -17,7 +17,7 @@ public class JetBlockStringTemplateEntry extends JetStringTemplateEntryWithExpre
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitBlockStringTemplateEntry(this, data);
}
}
@@ -17,7 +17,7 @@ public class JetBreakExpression extends JetLabelQualifiedExpression {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitBreakExpression(this, data);
}
}
@@ -22,7 +22,7 @@ public class JetCallExpression extends JetExpression implements JetCallElement {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitCallExpression(this, data);
}
@@ -21,7 +21,7 @@ public class JetCatchClause extends JetElement {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitCatchSection(this, data);
}
@@ -40,7 +40,7 @@ public class JetClass extends JetTypeParameterListOwner implements JetClassOrObj
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitClass(this, data);
}
@@ -30,7 +30,7 @@ public class JetClassBody extends JetElement {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitClassBody(this, data);
}
@@ -17,7 +17,7 @@ public class JetClassInitializer extends JetDeclaration {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitAnonymousInitializer(this, data);
}
@@ -19,7 +19,7 @@ public class JetClassObject extends JetDeclaration {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitClassObject(this, data);
}
@@ -17,7 +17,7 @@ public class JetConstantExpression extends JetExpression {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitConstantExpression(this, data);
}
}
@@ -23,7 +23,7 @@ public class JetConstructor extends JetDeclaration implements JetDeclarationWith
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitConstructor(this, data);
}
@@ -17,7 +17,7 @@ public class JetContinueExpression extends JetLabelQualifiedExpression {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitContinueExpression(this, data);
}
}
@@ -28,7 +28,7 @@ public class JetDecomposerPattern extends JetPattern {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitDecomposerPattern(this, data);
}
}
@@ -19,7 +19,7 @@ public class JetDelegationSpecifier extends JetElement{
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitDelegationSpecifier(this, data);
}
@@ -20,7 +20,7 @@ public class JetDelegationSpecifierList extends JetElement {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitDelegationSpecifierList(this, data);
}
@@ -18,7 +18,7 @@ public class JetDelegatorByExpressionSpecifier extends JetDelegationSpecifier {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitDelegationByExpressionSpecifier(this, data);
}
@@ -22,7 +22,7 @@ public class JetDelegatorToSuperCall extends JetDelegationSpecifier implements J
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitDelegationToSuperCallSpecifier(this, data);
}
@@ -17,7 +17,7 @@ public class JetDelegatorToSuperClass extends JetDelegationSpecifier {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitDelegationToSuperClassSpecifier(this, data);
}
}
@@ -23,7 +23,7 @@ public class JetDelegatorToThisCall extends JetDelegationSpecifier implements Je
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitDelegationToThisCall(this, data);
}
@@ -19,7 +19,7 @@ public class JetDoWhileExpression extends JetLoopExpression {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitDoWhileExpression(this, data);
}
@@ -17,7 +17,7 @@ public class JetDotQualifiedExpression extends JetQualifiedExpression {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitDotQualifiedExpression(this, data);
}
}
@@ -52,7 +52,7 @@ public class JetElement extends ASTWrapperPsiElement {
visitor.visitJetElement(this);
}
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitJetElement(this, data);
}
}
@@ -52,7 +52,7 @@ public class JetEnumEntry extends JetClass {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitEnumEntry(this, data);
}
}
@@ -18,7 +18,7 @@ public class JetEscapeStringTemplateEntry extends JetStringTemplateEntry {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitEscapeStringTemplateEntry(this, data);
}
@@ -18,7 +18,7 @@ public abstract class JetExpression extends JetElement {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitExpression(this, data);
}
@@ -23,7 +23,7 @@ public class JetExpressionPattern extends JetPattern {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitExpressionPattern(this, data);
}
}
@@ -18,7 +18,7 @@ public class JetFinallySection extends JetElement {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitFinallySection(this, data);
}
@@ -19,7 +19,7 @@ public class JetForExpression extends JetLoopExpression {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitForExpression(this, data);
}
@@ -20,7 +20,7 @@ public class JetFunctionLiteralExpression extends JetExpression implements JetDe
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitFunctionLiteralExpression(this, data);
}
@@ -45,7 +45,7 @@ public class JetFunctionType extends JetTypeElement {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitFunctionType(this, data);
}
@@ -17,7 +17,7 @@ public class JetHashQualifiedExpression extends JetQualifiedExpression {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitHashQualifiedExpression(this, data);
}
}
@@ -19,7 +19,7 @@ public class JetIfExpression extends JetExpression {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitIfExpression(this, data);
}
@@ -20,7 +20,7 @@ public class JetImportDirective extends JetElement {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitImportDirective(this, data);
}
@@ -20,7 +20,7 @@ public class JetInitializerList extends JetElement {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitInitializerList(this, data);
}
@@ -20,7 +20,7 @@ public class JetIsExpression extends JetExpression {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitIsExpression(this, data);
}
@@ -17,7 +17,7 @@ public class JetLiteralStringTemplateEntry extends JetStringTemplateEntry {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitLiteralStringTemplateEntry(this, data);
}
}
@@ -25,7 +25,7 @@ public class JetModifierList extends JetElement {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitModifierList(this, data);
}
@@ -19,7 +19,7 @@ public class JetNamedFunction extends JetFunction {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitNamedFunction(this, data);
}
@@ -24,7 +24,7 @@ public class JetNamespace extends JetNamedDeclaration {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitNamespace(this, data);
}
@@ -24,7 +24,7 @@ public class JetNamespaceBody extends JetElement {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitNamespaceBody(this, data);
}
}
@@ -31,7 +31,7 @@ public class JetNullableType extends JetTypeElement {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitNullableType(this, data);
}
@@ -84,7 +84,7 @@ public class JetObjectDeclaration extends JetNamedDeclaration implements JetClas
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitObjectDeclaration(this, data);
}
@@ -18,7 +18,7 @@ public class JetObjectLiteralExpression extends JetExpression {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitObjectLiteralExpression(this, data);
}
@@ -20,7 +20,7 @@ public class JetParameter extends JetNamedDeclaration {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitParameter(this, data);
}
@@ -20,7 +20,7 @@ public class JetParameterList extends JetElement {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitParameterList(this, data);
}
@@ -18,7 +18,7 @@ public class JetParenthesizedExpression extends JetExpression {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitParenthesizedExpression(this, data);
}
@@ -24,7 +24,7 @@ public class JetPostfixExpression extends JetUnaryExpression {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitPostfixExpression(this, data);
}
}
@@ -17,7 +17,7 @@ public class JetPredicateExpression extends JetQualifiedExpression {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitPredicateExpression(this, data);
}
}
@@ -19,7 +19,7 @@ public class JetPrefixExpression extends JetUnaryExpression {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitPrefixExpression(this, data);
}
@@ -31,7 +31,7 @@ public class JetProperty extends JetTypeParameterListOwner implements JetModifie
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitProperty(this, data);
}
@@ -24,7 +24,7 @@ public class JetPropertyAccessor extends JetDeclaration implements JetDeclaratio
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitPropertyAccessor(this, data);
}
@@ -18,7 +18,7 @@ public class JetReturnExpression extends JetLabelQualifiedExpression {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitReturnExpression(this, data);
}
@@ -17,7 +17,7 @@ public class JetRootNamespaceExpression extends JetExpression {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitRootNamespaceExpression(this, data);
}
}
@@ -17,7 +17,7 @@ public class JetSafeQualifiedExpression extends JetQualifiedExpression {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitSafeQualifiedExpression(this, data);
}
}
@@ -26,7 +26,7 @@ public class JetSelfType extends JetTypeElement {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitSelfType(this, data);
}
}
@@ -62,7 +62,7 @@ public class JetSimpleNameExpression extends JetReferenceExpression {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitSimpleNameExpression(this, data);
}
}
@@ -18,7 +18,7 @@ public class JetSimpleNameStringTemplateEntry extends JetStringTemplateEntryWith
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitSimpleNameStringTemplateEntry(this, data);
}
}
@@ -17,7 +17,7 @@ public abstract class JetStringTemplateEntryWithExpression extends JetStringTemp
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitStringTemplateEntryWithExpression(this, data);
}
}
@@ -17,7 +17,7 @@ public class JetStringTemplateExpression extends JetExpression {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitStringTemplateExpression(this, data);
}
@@ -20,7 +20,7 @@ public class JetThisExpression extends JetLabelQualifiedExpression {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitThisExpression(this, data);
}
@@ -18,7 +18,7 @@ public class JetThrowExpression extends JetExpression {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitThrowExpression(this, data);
}
@@ -10,11 +10,11 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
public Void visitNamespace(JetNamespace namespace, D data) {
List<JetImportDirective> importDirectives = namespace.getImportDirectives();
for (JetImportDirective directive : importDirectives) {
directive.visit(this, data);
directive.accept(this, data);
}
List<JetDeclaration> declarations = namespace.getDeclarations();
for (JetDeclaration declaration : declarations) {
declaration.visit(this, data);
declaration.accept(this, data);
}
return null;
}
@@ -23,7 +23,7 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
public Void visitClass(JetClass klass, D data) {
List<JetDeclaration> declarations = klass.getDeclarations();
for (JetDeclaration declaration : declarations) {
declaration.visit(this, data);
declaration.accept(this, data);
}
return null;
}
@@ -32,7 +32,7 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
public Void visitClassObject(JetClassObject classObject, D data) {
JetObjectDeclaration objectDeclaration = classObject.getObjectDeclaration();
if (objectDeclaration != null) {
objectDeclaration.visit(this, data);
objectDeclaration.accept(this, data);
}
return null;
}
@@ -53,11 +53,11 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
public Void visitProperty(JetProperty property, D data) {
List<JetPropertyAccessor> accessors = property.getAccessors();
for (JetPropertyAccessor accessor : accessors) {
accessor.visit(this, data);
accessor.accept(this, data);
}
JetExpression initializer = property.getInitializer();
if (initializer != null) {
initializer.visit(this, data);
initializer.accept(this, data);
}
return null;
}
@@ -70,7 +70,7 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
@Override
public Void visitJetFile(JetFile file, D data) {
JetNamespace rootNamespace = file.getRootNamespace();
return rootNamespace.visit(this, data);
return rootNamespace.accept(this, data);
}
@Override
@@ -82,11 +82,11 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
public Void visitClassBody(JetClassBody classBody, D data) {
List<JetDeclaration> declarations = classBody.getDeclarations();
for (JetDeclaration declaration : declarations) {
declaration.visit(this, data);
declaration.accept(this, data);
}
List<JetConstructor> secondaryConstructors = classBody.getSecondaryConstructors();
for (JetConstructor constructor : secondaryConstructors) {
constructor.visit(this, data);
constructor.accept(this, data);
}
return null;
}
@@ -95,7 +95,7 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
public Void visitNamespaceBody(JetNamespaceBody body, D data) {
List<JetDeclaration> declarations = body.getDeclarations();
for (JetDeclaration declaration : declarations) {
declaration.visit(this, data);
declaration.accept(this, data);
}
return null;
}
@@ -119,7 +119,7 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
public Void visitTypeParameterList(JetTypeParameterList list, D data) {
List<JetTypeParameter> parameters = list.getParameters();
for (JetTypeParameter parameter : parameters) {
parameter.visit(this, data);
parameter.accept(this, data);
}
return null;
}
@@ -133,11 +133,11 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
public Void visitEnumEntry(JetEnumEntry enumEntry, D data) {
List<JetDelegationSpecifier> delegationSpecifiers = enumEntry.getDelegationSpecifiers();
for (JetDelegationSpecifier delegationSpecifier : delegationSpecifiers) {
delegationSpecifier.visit(this, data);
delegationSpecifier.accept(this, data);
}
JetModifierList modifierList = enumEntry.getModifierList();
if (modifierList != null) {
modifierList.visit(this, data);
modifierList.accept(this, data);
}
return null;
}
@@ -146,7 +146,7 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
public Void visitParameterList(JetParameterList list, D data) {
List<JetParameter> parameters = list.getParameters();
for (JetParameter parameter : parameters) {
parameter.visit(this, data);
parameter.accept(this, data);
}
return null;
}
@@ -160,7 +160,7 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
public Void visitDelegationSpecifierList(JetDelegationSpecifierList list, D data) {
List<JetDelegationSpecifier> delegationSpecifiers = list.getDelegationSpecifiers();
for (JetDelegationSpecifier delegationSpecifier : delegationSpecifiers) {
delegationSpecifier.visit(this, data);
delegationSpecifier.accept(this, data);
}
return null;
}
@@ -199,7 +199,7 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
public Void visitValueArgumentList(JetValueArgumentList list, D data) {
List<JetValueArgument> arguments = list.getArguments();
for (JetValueArgument argument : arguments) {
argument.visit(this, data);
argument.accept(this, data);
}
return null;
}
@@ -213,7 +213,7 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
public Void visitLoopExpression(JetLoopExpression loopExpression, D data) {
JetExpression body = loopExpression.getBody();
if (body != null) {
body.visit(this, data);
body.accept(this, data);
}
return null;
}
@@ -242,7 +242,7 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
public Void visitPrefixExpression(JetPrefixExpression expression, D data) {
JetExpression baseExpression = expression.getBaseExpression();
if (baseExpression != null) {
baseExpression.visit(this, data);
baseExpression.accept(this, data);
}
return null;
}
@@ -250,7 +250,7 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
@Override
public Void visitPostfixExpression(JetPostfixExpression expression, D data) {
JetExpression baseExpression = expression.getBaseExpression();
baseExpression.visit(this, data);
baseExpression.accept(this, data);
return null;
}
@@ -258,17 +258,17 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
public Void visitUnaryExpression(JetUnaryExpression expression, D data) {
JetExpression baseExpression = expression.getBaseExpression();
assert baseExpression != null;
baseExpression.visit(this, data);
baseExpression.accept(this, data);
return null;
}
@Override
public Void visitBinaryExpression(JetBinaryExpression expression, D data) {
JetExpression left = expression.getLeft();
left.visit(this, data);
left.accept(this, data);
JetExpression right = expression.getRight();
if (right != null) {
right.visit(this, data);
right.accept(this, data);
}
return super.visitBinaryExpression(expression, data);
}
@@ -277,7 +277,7 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
public Void visitReturnExpression(JetReturnExpression expression, D data) {
JetExpression returnedExpression = expression.getReturnedExpression();
if (returnedExpression != null) {
returnedExpression.visit(this, data);
returnedExpression.accept(this, data);
}
return null;
}
@@ -286,7 +286,7 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
public Void visitLabelQualifiedExpression(JetLabelQualifiedExpression expression, D data) {
JetExpression labeledExpression = expression.getLabeledExpression();
if (labeledExpression != null) {
labeledExpression.visit(this, data);
labeledExpression.accept(this, data);
}
return null;
}
@@ -295,7 +295,7 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
public Void visitThrowExpression(JetThrowExpression expression, D data) {
JetExpression thrownExpression = expression.getThrownExpression();
if (thrownExpression != null) {
thrownExpression.visit(this, data);
thrownExpression.accept(this, data);
}
return null;
}
@@ -314,15 +314,15 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
public Void visitIfExpression(JetIfExpression expression, D data) {
JetExpression condition = expression.getCondition();
if (condition != null) {
condition.visit(this, data);
condition.accept(this, data);
}
JetExpression then = expression.getThen();
if (then != null) {
then.visit(this, data);
then.accept(this, data);
}
JetExpression anElse = expression.getElse();
if (anElse != null) {
anElse.visit(this, data);
anElse.accept(this, data);
}
return null;
}
@@ -331,11 +331,11 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
public Void visitWhenExpression(JetWhenExpression expression, D data) {
List<JetWhenEntry> entries = expression.getEntries();
for (JetWhenEntry entry : entries) {
entry.visit(this, data);
entry.accept(this, data);
}
JetExpression subjectExpression = expression.getSubjectExpression();
if (subjectExpression != null) {
subjectExpression.visit(this, data);
subjectExpression.accept(this, data);
}
return null;
}
@@ -343,14 +343,14 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
@Override
public Void visitTryExpression(JetTryExpression expression, D data) {
JetBlockExpression tryBlock = expression.getTryBlock();
tryBlock.visit(this, data);
tryBlock.accept(this, data);
List<JetCatchClause> catchClauses = expression.getCatchClauses();
for (JetCatchClause catchClause : catchClauses) {
catchClause.visit(this, data);
catchClause.accept(this, data);
}
JetFinallySection finallyBlock = expression.getFinallyBlock();
if (finallyBlock != null) {
finallyBlock.visit(this, data);
finallyBlock.accept(this, data);
}
return null;
}
@@ -359,11 +359,11 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
public Void visitForExpression(JetForExpression expression, D data) {
JetParameter loopParameter = expression.getLoopParameter();
if (loopParameter != null) {
loopParameter.visit(this, data);
loopParameter.accept(this, data);
}
JetExpression loopRange = expression.getLoopRange();
if (loopRange != null) {
loopRange.visit(this, data);
loopRange.accept(this, data);
}
visitLoopExpression(expression, data);
return null;
@@ -373,7 +373,7 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
public Void visitWhileExpression(JetWhileExpression expression, D data) {
JetExpression condition = expression.getCondition();
if (condition != null) {
condition.visit(this, data);
condition.accept(this, data);
}
visitLoopExpression(expression, data);
return null;
@@ -383,7 +383,7 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
public Void visitDoWhileExpression(JetDoWhileExpression expression, D data) {
JetExpression condition = expression.getCondition();
if (condition != null) {
condition.visit(this, data);
condition.accept(this, data);
}
visitLoopExpression(expression, data);
return null;
@@ -392,7 +392,7 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
@Override
public Void visitFunctionLiteralExpression(JetFunctionLiteralExpression expression, D data) {
JetFunctionLiteral functionLiteral = expression.getFunctionLiteral();
functionLiteral.visit(this, data);
functionLiteral.accept(this, data);
visitDeclarationWithBody(expression, data);
return null;
}
@@ -400,7 +400,7 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
@Override
public Void visitAnnotatedExpression(JetAnnotatedExpression expression, D data) {
JetExpression baseExpression = expression.getBaseExpression();
baseExpression.visit(this, data);
baseExpression.accept(this, data);
return null;
}
@@ -408,7 +408,7 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
public Void visitCallExpression(JetCallExpression expression, D data) {
JetExpression calleeExpression = expression.getCalleeExpression();
if (calleeExpression != null) {
calleeExpression.visit(this, data);
calleeExpression.accept(this, data);
}
return null;
}
@@ -416,10 +416,10 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
@Override
public Void visitArrayAccessExpression(JetArrayAccessExpression expression, D data) {
JetExpression arrayExpression = expression.getArrayExpression();
arrayExpression.visit(this, data);
arrayExpression.accept(this, data);
List<JetExpression> indexExpressions = expression.getIndexExpressions();
for (JetExpression indexExpression : indexExpressions) {
indexExpression.visit(this, data);
indexExpression.accept(this, data);
}
return null;
}
@@ -427,10 +427,10 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
@Override
public Void visitQualifiedExpression(JetQualifiedExpression expression, D data) {
JetExpression receiver = expression.getReceiverExpression();
receiver.visit(this, data);
receiver.accept(this, data);
JetExpression selector = expression.getSelectorExpression();
if (selector != null) {
selector.visit(this, data);
selector.accept(this, data);
}
return null;
}
@@ -462,7 +462,7 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
@Override
public Void visitObjectLiteralExpression(JetObjectLiteralExpression expression, D data) {
JetObjectDeclaration objectDeclaration = expression.getObjectDeclaration();
objectDeclaration.visit(this, data);
objectDeclaration.accept(this, data);
return null;
}
@@ -475,7 +475,7 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
public Void visitBlockExpression(JetBlockExpression expression, D data) {
List<JetElement> statements = expression.getStatements();
for (JetElement statement : statements) {
statement.visit(this, data);
statement.accept(this, data);
}
return null;
}
@@ -484,11 +484,11 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
public Void visitCatchSection(JetCatchClause catchClause, D data) {
JetParameter catchParameter = catchClause.getCatchParameter();
if (catchParameter != null) {
catchParameter.visit(this, data);
catchParameter.accept(this, data);
}
JetExpression catchBody = catchClause.getCatchBody();
if (catchBody != null) {
catchBody.visit(this, data);
catchBody.accept(this, data);
}
return null;
}
@@ -496,7 +496,7 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
@Override
public Void visitFinallySection(JetFinallySection finallySection, D data) {
JetBlockExpression finalExpression = finallySection.getFinalExpression();
finalExpression.visit(this, data);
finalExpression.accept(this, data);
return null;
}
@@ -504,7 +504,7 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
public Void visitTypeArgumentList(JetTypeArgumentList typeArgumentList, D data) {
List<JetTypeProjection> arguments = typeArgumentList.getArguments();
for (JetTypeProjection argument : arguments) {
argument.visit(this, data);
argument.accept(this, data);
}
return null;
}
@@ -512,10 +512,10 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
@Override
public Void visitThisExpression(JetThisExpression expression, D data) {
JetReferenceExpression thisReference = expression.getThisReference();
thisReference.visit(this, data);
thisReference.accept(this, data);
JetTypeReference superTypeQualifier = expression.getSuperTypeQualifier();
if (superTypeQualifier != null) {
superTypeQualifier.visit(this, data);
superTypeQualifier.accept(this, data);
}
visitLabelQualifiedExpression(expression, data);
return null;
@@ -525,7 +525,7 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
public Void visitParenthesizedExpression(JetParenthesizedExpression expression, D data) {
JetExpression innerExpression = expression.getExpression();
if (innerExpression != null) {
innerExpression.visit(this, data);
innerExpression.accept(this, data);
}
return null;
}
@@ -534,7 +534,7 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
public Void visitInitializerList(JetInitializerList list, D data) {
List<JetDelegationSpecifier> initializers = list.getInitializers();
for (JetDelegationSpecifier initializer : initializers) {
initializer.visit(this, data);
initializer.accept(this, data);
}
return null;
}
@@ -542,7 +542,7 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
@Override
public Void visitAnonymousInitializer(JetClassInitializer initializer, D data) {
JetExpression body = initializer.getBody();
body.visit(this, data);
body.accept(this, data);
return null;
}
@@ -556,7 +556,7 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
public Void visitTypeConstraintList(JetTypeConstraintList list, D data) {
List<JetTypeConstraint> constraints = list.getConstraints();
for (JetTypeConstraint constraint : constraints) {
constraint.visit(this, data);
constraint.accept(this, data);
}
return null;
}
@@ -565,7 +565,7 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
public Void visitTypeConstraint(JetTypeConstraint constraint, D data) {
JetSimpleNameExpression subjectTypeParameterName = constraint.getSubjectTypeParameterName();
if (subjectTypeParameterName != null) {
subjectTypeParameterName.visit(this, data);
subjectTypeParameterName.accept(this, data);
}
return null;
}
@@ -593,10 +593,10 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
@Override
public Void visitBinaryWithTypeRHSExpression(JetBinaryExpressionWithTypeRHS expression, D data) {
JetExpression left = expression.getLeft();
left.visit(this, data);
left.accept(this, data);
JetTypeReference right = expression.getRight();
if (right != null) {
right.visit(this, data);
right.accept(this, data);
}
return null;
}
@@ -605,7 +605,7 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
public Void visitStringTemplateExpression(JetStringTemplateExpression expression, D data) {
JetStringTemplateEntry[] entries = expression.getEntries();
for (JetStringTemplateEntry entry : entries) {
entry.visit(this, data);
entry.accept(this, data);
}
return null;
}
@@ -629,11 +629,11 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
public Void visitWhenEntry(JetWhenEntry jetWhenEntry, D data) {
JetExpression expression = jetWhenEntry.getExpression();
if (expression != null) {
expression.visit(this, data);
expression.accept(this, data);
}
JetWhenCondition[] conditions = jetWhenEntry.getConditions();
for (JetWhenCondition condition : conditions) {
condition.visit(this, data);
condition.accept(this, data);
}
return null;
}
@@ -641,12 +641,12 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
@Override
public Void visitIsExpression(JetIsExpression expression, D data) {
JetExpression leftHandSide = expression.getLeftHandSide();
leftHandSide.visit(this, data);
leftHandSide.accept(this, data);
JetSimpleNameExpression operationReference = expression.getOperationReference();
operationReference.visit(this, data);
operationReference.accept(this, data);
JetPattern pattern = expression.getPattern();
if (pattern != null) {
pattern.visit(this, data);
pattern.accept(this, data);
}
return null;
}
@@ -655,7 +655,7 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
public Void visitWhenConditionCall(JetWhenConditionCall condition, D data) {
JetExpression callSuffixExpression = condition.getCallSuffixExpression();
if (callSuffixExpression != null) {
callSuffixExpression.visit(this, data);
callSuffixExpression.accept(this, data);
}
return null;
}
@@ -664,7 +664,7 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
public Void visitWhenConditionIsPattern(JetWhenConditionIsPattern condition, D data) {
JetPattern pattern = condition.getPattern();
if (pattern != null) {
pattern.visit(this, data);
pattern.accept(this, data);
}
return null;
}
@@ -672,10 +672,10 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
@Override
public Void visitWhenConditionInRange(JetWhenConditionInRange condition, D data) {
JetSimpleNameExpression operationReference = condition.getOperationReference();
operationReference.visit(this, data);
operationReference.accept(this, data);
JetExpression rangeExpression = condition.getRangeExpression();
if (rangeExpression != null) {
rangeExpression.visit(this, data);
rangeExpression.accept(this, data);
}
return null;
}
@@ -694,7 +694,7 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
public Void visitExpressionPattern(JetExpressionPattern pattern, D data) {
JetExpression expression = pattern.getExpression();
if (expression != null) {
expression.visit(this, data);
expression.accept(this, data);
}
return null;
}
@@ -703,7 +703,7 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
public Void visitTuplePattern(JetTuplePattern pattern, D data) {
List<JetTuplePatternEntry> entries = pattern.getEntries();
for (JetTuplePatternEntry entry : entries) {
entry.visit(this, data);
entry.accept(this, data);
}
return null;
}
@@ -711,10 +711,10 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
@Override
public Void visitDecomposerPattern(JetDecomposerPattern pattern, D data) {
JetTuplePattern argumentList = pattern.getArgumentList();
argumentList.visit(this, data);
argumentList.accept(this, data);
JetExpression decomposerExpression = pattern.getDecomposerExpression();
if (decomposerExpression != null) {
decomposerExpression.visit(this, data);
decomposerExpression.accept(this, data);
}
return null;
}
@@ -723,11 +723,11 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
public Void visitObjectDeclaration(JetObjectDeclaration objectDeclaration, D data) {
List<JetDeclaration> declarations = objectDeclaration.getDeclarations();
for (JetDeclaration declaration : declarations) {
declaration.visit(this, data);
declaration.accept(this, data);
}
JetDelegationSpecifierList delegationSpecifierList = objectDeclaration.getDelegationSpecifierList();
if (delegationSpecifierList != null) {
delegationSpecifierList.visit(this, data);
delegationSpecifierList.accept(this, data);
}
return null;
}
@@ -736,10 +736,10 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
public Void visitBindingPattern(JetBindingPattern pattern, D data) {
JetWhenCondition condition = pattern.getCondition();
if (condition != null) {
condition.visit(this, data);
condition.accept(this, data);
}
JetProperty variableDeclaration = pattern.getVariableDeclaration();
variableDeclaration.visit(this, data);
variableDeclaration.accept(this, data);
return null;
}
@@ -747,7 +747,7 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
public Void visitStringTemplateEntry(JetStringTemplateEntry entry, D data) {
JetExpression expression = entry.getExpression();
if (expression != null) {
expression.visit(this, data);
expression.accept(this, data);
}
return null;
}
@@ -785,11 +785,11 @@ public class JetTreeVisitor<D> extends JetVisitor<Void, D> {
private Void visitDeclarationWithBody(JetDeclarationWithBody declaration, D data) {
JetExpression bodyExpression = declaration.getBodyExpression();
if (bodyExpression != null) {
bodyExpression.visit(this, data);
bodyExpression.accept(this, data);
}
List<JetParameter> valueParameters = declaration.getValueParameters();
for (JetParameter valueParameter : valueParameters) {
valueParameter.visit(this, data);
valueParameter.accept(this, data);
}
return null;
}
@@ -21,7 +21,7 @@ public class JetTryExpression extends JetExpression {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitTryExpression(this, data);
}
@@ -20,7 +20,7 @@ public class JetTupleExpression extends JetExpression {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitTupleExpression(this, data);
}
@@ -20,7 +20,7 @@ public class JetTuplePattern extends JetPattern {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitTuplePattern(this, data);
}
@@ -26,7 +26,7 @@ public class JetTupleType extends JetTypeElement {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitTupleType(this, data);
}
@@ -20,7 +20,7 @@ public class JetTypeArgumentList extends JetElement {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitTypeArgumentList(this, data);
}
@@ -21,7 +21,7 @@ public class JetTypeConstraint extends JetElement {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitTypeConstraint(this, data);
}
@@ -20,7 +20,7 @@ public class JetTypeConstraintList extends JetElement {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitTypeConstraintList(this, data);
}
@@ -21,7 +21,7 @@ public class JetTypeParameter extends JetNamedDeclaration {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitTypeParameter(this, data);
}
@@ -24,7 +24,7 @@ public class JetTypeParameterList extends JetElement {
}
@Override
public <R, D> R visit(@NotNull JetVisitor<R, D> visitor, D data) {
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitTypeParameterList(this, data);
}
}

Some files were not shown because too many files have changed in this diff Show More