diff --git a/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/android/synthetic/diagnostic/AndroidExtensionPropertiesCallChecked.kt b/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/android/synthetic/diagnostic/AndroidExtensionPropertiesCallChecked.kt index 2214a43b446..390d7cd89ab 100644 --- a/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/android/synthetic/diagnostic/AndroidExtensionPropertiesCallChecked.kt +++ b/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/android/synthetic/diagnostic/AndroidExtensionPropertiesCallChecked.kt @@ -23,6 +23,7 @@ import org.jetbrains.kotlin.resolve.calls.checkers.CallChecker import org.jetbrains.kotlin.resolve.calls.context.BasicCallResolutionContext import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall import org.jetbrains.kotlin.resolve.constants.StringValue +import org.jetbrains.kotlin.android.synthetic.diagnostic.ErrorsAndroid.* public class AndroidExtensionPropertiesCallChecker : CallChecker { override fun check(resolvedCall: ResolvedCall, context: BasicCallResolutionContext) { @@ -39,7 +40,9 @@ public class AndroidExtensionPropertiesCallChecker : CallChecker { it.name.asString() == SyntheticFileGenerator.INVALID_WIDGET_TYPE_ANNOTATION_TYPE_PARAMETER }.values().firstOrNull() as? StringValue ?: return - context.trace.report(ErrorsAndroid.SYNTHETIC_INVALID_WIDGET_TYPE.on(expression, type.value)) + val erroneousType = type.value + val warning = if (erroneousType.contains('.')) SYNTHETIC_UNRESOLVED_WIDGET_TYPE else SYNTHETIC_INVALID_WIDGET_TYPE + context.trace.report(warning.on(expression, erroneousType)) } } \ No newline at end of file diff --git a/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/android/synthetic/diagnostic/DefaultErrorMessagesAndroid.kt b/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/android/synthetic/diagnostic/DefaultErrorMessagesAndroid.kt index 7ea2c7099d3..853953d8c20 100644 --- a/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/android/synthetic/diagnostic/DefaultErrorMessagesAndroid.kt +++ b/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/android/synthetic/diagnostic/DefaultErrorMessagesAndroid.kt @@ -29,6 +29,9 @@ public class DefaultErrorMessagesAndroid : DefaultErrorMessages.Extension { MAP.put(ErrorsAndroid.SYNTHETIC_INVALID_WIDGET_TYPE, "Widget has an invalid type ''{0}''. Please specify the fully qualified widget class name in XML", Renderers.TO_STRING) + MAP.put(ErrorsAndroid.SYNTHETIC_UNRESOLVED_WIDGET_TYPE, + "Widget has an unresolved type ''{0}'', and thus it was upcasted to ''android.view.View''.", + Renderers.TO_STRING) } } diff --git a/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/android/synthetic/diagnostic/ErrorsAndroid.java b/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/android/synthetic/diagnostic/ErrorsAndroid.java index a67f3634ca5..a238baf8d42 100644 --- a/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/android/synthetic/diagnostic/ErrorsAndroid.java +++ b/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/android/synthetic/diagnostic/ErrorsAndroid.java @@ -24,6 +24,7 @@ import static org.jetbrains.kotlin.diagnostics.Severity.WARNING; public interface ErrorsAndroid { DiagnosticFactory1 SYNTHETIC_INVALID_WIDGET_TYPE = DiagnosticFactory1.create(WARNING); + DiagnosticFactory1 SYNTHETIC_UNRESOLVED_WIDGET_TYPE = DiagnosticFactory1.create(WARNING); @SuppressWarnings("UnusedDeclaration") Object _initializer = new Object() {