Report more specific warning on a wrong fq Android widget type
This commit is contained in:
+4
-1
@@ -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.context.BasicCallResolutionContext
|
||||||
import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall
|
import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall
|
||||||
import org.jetbrains.kotlin.resolve.constants.StringValue
|
import org.jetbrains.kotlin.resolve.constants.StringValue
|
||||||
|
import org.jetbrains.kotlin.android.synthetic.diagnostic.ErrorsAndroid.*
|
||||||
|
|
||||||
public class AndroidExtensionPropertiesCallChecker : CallChecker {
|
public class AndroidExtensionPropertiesCallChecker : CallChecker {
|
||||||
override fun <F : CallableDescriptor> check(resolvedCall: ResolvedCall<F>, context: BasicCallResolutionContext) {
|
override fun <F : CallableDescriptor> check(resolvedCall: ResolvedCall<F>, context: BasicCallResolutionContext) {
|
||||||
@@ -39,7 +40,9 @@ public class AndroidExtensionPropertiesCallChecker : CallChecker {
|
|||||||
it.name.asString() == SyntheticFileGenerator.INVALID_WIDGET_TYPE_ANNOTATION_TYPE_PARAMETER
|
it.name.asString() == SyntheticFileGenerator.INVALID_WIDGET_TYPE_ANNOTATION_TYPE_PARAMETER
|
||||||
}.values().firstOrNull() as? StringValue ?: return
|
}.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))
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
+3
@@ -29,6 +29,9 @@ public class DefaultErrorMessagesAndroid : DefaultErrorMessages.Extension {
|
|||||||
MAP.put(ErrorsAndroid.SYNTHETIC_INVALID_WIDGET_TYPE,
|
MAP.put(ErrorsAndroid.SYNTHETIC_INVALID_WIDGET_TYPE,
|
||||||
"Widget has an invalid type ''{0}''. Please specify the fully qualified widget class name in XML",
|
"Widget has an invalid type ''{0}''. Please specify the fully qualified widget class name in XML",
|
||||||
Renderers.TO_STRING)
|
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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
@@ -24,6 +24,7 @@ import static org.jetbrains.kotlin.diagnostics.Severity.WARNING;
|
|||||||
|
|
||||||
public interface ErrorsAndroid {
|
public interface ErrorsAndroid {
|
||||||
DiagnosticFactory1<JetExpression, String> SYNTHETIC_INVALID_WIDGET_TYPE = DiagnosticFactory1.create(WARNING);
|
DiagnosticFactory1<JetExpression, String> SYNTHETIC_INVALID_WIDGET_TYPE = DiagnosticFactory1.create(WARNING);
|
||||||
|
DiagnosticFactory1<JetExpression, String> SYNTHETIC_UNRESOLVED_WIDGET_TYPE = DiagnosticFactory1.create(WARNING);
|
||||||
|
|
||||||
@SuppressWarnings("UnusedDeclaration")
|
@SuppressWarnings("UnusedDeclaration")
|
||||||
Object _initializer = new Object() {
|
Object _initializer = new Object() {
|
||||||
|
|||||||
Reference in New Issue
Block a user