diff options
Diffstat (limited to 'processor/src/main/java/org/robolectric/annotation/processing/validator/ImplementsValidator.java')
-rw-r--r-- | processor/src/main/java/org/robolectric/annotation/processing/validator/ImplementsValidator.java | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/processor/src/main/java/org/robolectric/annotation/processing/validator/ImplementsValidator.java b/processor/src/main/java/org/robolectric/annotation/processing/validator/ImplementsValidator.java index e1186b9c4..ee4de7ae5 100644 --- a/processor/src/main/java/org/robolectric/annotation/processing/validator/ImplementsValidator.java +++ b/processor/src/main/java/org/robolectric/annotation/processing/validator/ImplementsValidator.java @@ -173,19 +173,23 @@ public class ImplementsValidator extends Validator { AnnotationValue classNameAttr, TypeElement shadowPickerTypeElement) { - String sdkClassName; + String sdkClassNameFq; if (valueAttr == null) { - sdkClassName = Helpers.getAnnotationStringValue(classNameAttr).replace('$', '.'); + sdkClassNameFq = Helpers.getAnnotationStringValue(classNameAttr); } else { - sdkClassName = Helpers.getAnnotationTypeMirrorValue(valueAttr).toString(); + TypeMirror typeMirror = Helpers.getAnnotationTypeMirrorValue(valueAttr); + TypeElement typeElement = MoreElements.asType(types.asElement(typeMirror)); + sdkClassNameFq = elements.getBinaryName(typeElement).toString(); } // there's no such type at the current SDK level, so just use strings... // getQualifiedName() uses Outer.Inner and we want Outer$Inner, so: String name = getClassFQName(shadowType); - modelBuilder.addExtraShadow(sdkClassName, name); + // SHADOW_MAP currently uses class dot syntax for keys, but SHADOW_PICKER_MAP uses + // FQ syntax for keys. + modelBuilder.addExtraShadow(sdkClassNameFq.replace('$', '.'), name); if (shadowPickerTypeElement != null) { - modelBuilder.addExtraShadowPicker(sdkClassName, shadowPickerTypeElement); + modelBuilder.addExtraShadowPicker(sdkClassNameFq, shadowPickerTypeElement); } } |