Receiver visitor added
This commit is contained in:
+1
-1
@@ -6,7 +6,7 @@ import org.jetbrains.jet.lang.types.JetType;
|
||||
/**
|
||||
* @author abreslav
|
||||
*/
|
||||
public class AbstractReceiverDescriptor implements ReceiverDescriptor {
|
||||
public abstract class AbstractReceiverDescriptor implements ReceiverDescriptor {
|
||||
protected final JetType receiverType;
|
||||
|
||||
public AbstractReceiverDescriptor(@NotNull JetType receiverType) {
|
||||
|
||||
+6
@@ -1,5 +1,6 @@
|
||||
package org.jetbrains.jet.lang.resolve.scopes.receivers;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
||||
|
||||
/**
|
||||
@@ -10,4 +11,9 @@ public class ClassReceiver extends ImplicitReceiverDescriptor {
|
||||
public ClassReceiver(ClassDescriptor classDescriptor) {
|
||||
super(classDescriptor, classDescriptor.getDefaultType());
|
||||
}
|
||||
|
||||
@Override
|
||||
public <R, D> R accept(@NotNull ReceiverDescriptorVisitor<R, D> visitor, D data) {
|
||||
return visitor.visitClassReceiver(this, data);
|
||||
}
|
||||
}
|
||||
|
||||
+5
@@ -20,4 +20,9 @@ public class ExpressionReceiver extends AbstractReceiverDescriptor implements Re
|
||||
public JetExpression getExpression() {
|
||||
return expression;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <R, D> R accept(@NotNull ReceiverDescriptorVisitor<R, D> visitor, D data) {
|
||||
return visitor.visitExpressionReceiver(this, data);
|
||||
}
|
||||
}
|
||||
|
||||
+5
@@ -12,4 +12,9 @@ public class ExtensionReceiver extends ImplicitReceiverDescriptor {
|
||||
public ExtensionReceiver(@NotNull CallableDescriptor callableDescriptor, @NotNull JetType receiverType) {
|
||||
super(callableDescriptor, receiverType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <R, D> R accept(@NotNull ReceiverDescriptorVisitor<R, D> visitor, D data) {
|
||||
return visitor.visitExtensionReceiver(this, data);
|
||||
}
|
||||
}
|
||||
|
||||
+7
@@ -20,6 +20,11 @@ public interface ReceiverDescriptor {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <R, D> R accept(@NotNull ReceiverDescriptorVisitor<R, D> visitor, D data) {
|
||||
return visitor.visitNoReceiver(this, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "NO_RECEIVER";
|
||||
@@ -30,4 +35,6 @@ public interface ReceiverDescriptor {
|
||||
JetType getType();
|
||||
|
||||
boolean exists();
|
||||
|
||||
<R, D> R accept(@NotNull ReceiverDescriptorVisitor<R, D> visitor, D data);
|
||||
}
|
||||
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
package org.jetbrains.jet.lang.resolve.scopes.receivers;
|
||||
|
||||
/**
|
||||
* @author abreslav
|
||||
*/
|
||||
public class ReceiverDescriptorVisitor<R, D> {
|
||||
public R visitNoReceiver(ReceiverDescriptor noReceiver, D data) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public R visitTransientReceiver(TransientReceiver receiver, D data) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public R visitExtensionReceiver(ExtensionReceiver receiver, D data) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public R visitExpressionReceiver(ExpressionReceiver receiver, D data) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public R visitClassReceiver(ClassReceiver classReceiver, D data) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
+5
@@ -13,4 +13,9 @@ public class TransientReceiver extends AbstractReceiverDescriptor {
|
||||
public TransientReceiver(@NotNull JetType type) {
|
||||
super(type);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <R, D> R accept(@NotNull ReceiverDescriptorVisitor<R, D> visitor, D data) {
|
||||
return visitor.visitTransientReceiver(this, data);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user