EA-46019 - assert: PropertyCodegen.generatePropertyDelegateAccess: delegate type can be null when delegate expression is unresolved and back-end called from light class generation

This commit is contained in:
Natalia.Ukhorskaya
2013-05-14 12:21:14 +04:00
parent 04120f432c
commit 32c5f5f59d
3 changed files with 16 additions and 1 deletions
@@ -40,6 +40,7 @@ import org.jetbrains.jet.lang.resolve.java.JvmAbi;
import org.jetbrains.jet.lang.resolve.java.JvmStdlibNames;
import org.jetbrains.jet.lang.resolve.java.kt.DescriptorKindUtils;
import org.jetbrains.jet.lang.resolve.name.Name;
import org.jetbrains.jet.lang.types.ErrorUtils;
import org.jetbrains.jet.lang.types.JetType;
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
@@ -114,7 +115,10 @@ public class PropertyCodegen extends GenerationStateAware {
modifiers |= ACC_VOLATILE;
}
JetType delegateType = bindingContext.get(BindingContext.EXPRESSION_TYPE, p.getDelegateExpression());
assert delegateType != null : "Type of delegate should be recorded: " + p.getText();
if (delegateType == null) {
// If delegate expression is unresolved reference
delegateType = ErrorUtils.createErrorType("Delegate type");
}
Type type = typeMapper.mapType(delegateType);
return v.newField(p, modifiers, JvmAbi.getPropertyDelegateName(propertyDescriptor.getName()), type.getDescriptor(),
null, null);
+7
View File
@@ -0,0 +1,7 @@
class SomeProp() {
fun get(t: Any, metadata: PropertyMetadataImpl) = 42
}
class Some<caret>() {
val renderer by SomeProp()
}
@@ -87,6 +87,10 @@ public class JetJavaFacadeTest extends LightCodeInsightFixtureTestCase {
doTestWrapClass();
}
public void testEa46019() {
doTestWrapClass();
}
public void testEa38770() {
myFixture.configureByFile(getTestName(true) + ".kt");