--- a/langtools/src/share/classes/com/sun/tools/javac/model/JavacTypes.java Fri Mar 11 15:39:51 2011 -0800
+++ b/langtools/src/share/classes/com/sun/tools/javac/model/JavacTypes.java Mon Mar 14 11:33:33 2011 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -73,9 +73,14 @@
public Element asElement(TypeMirror t) {
Type type = cast(Type.class, t);
- if (type.tag != TypeTags.CLASS && type.tag != TypeTags.TYPEVAR)
- return null;
- return type.asElement();
+ switch (type.tag) {
+ case TypeTags.CLASS:
+ case TypeTags.ERROR:
+ case TypeTags.TYPEVAR:
+ return type.asElement();
+ default:
+ return null;
+ }
}
public boolean isSameType(TypeMirror t1, TypeMirror t2) {
--- a/langtools/test/tools/javac/api/6557752/T6557752.java Fri Mar 11 15:39:51 2011 -0800
+++ b/langtools/test/tools/javac/api/6557752/T6557752.java Mon Mar 14 11:33:33 2011 -0700
@@ -118,7 +118,8 @@
Types types = task.getTypes();
- if (types.asElement(trees.getOriginalType((ErrorType)typeMirror)) != null) {
+ str1 = types.asElement(trees.getOriginalType((ErrorType)typeMirror)).toString();
+ if (!str1.equals("FooBar")) {
throw new AssertionError("Types.asElement() error!");
}
foundError = true;
--- a/langtools/test/tools/javac/processing/model/element/TestMissingElement/TestMissingElement.java Fri Mar 11 15:39:51 2011 -0800
+++ b/langtools/test/tools/javac/processing/model/element/TestMissingElement/TestMissingElement.java Mon Mar 14 11:33:33 2011 -0700
@@ -24,7 +24,7 @@
/*
* @test
- * @bug 6639645
+ * @bug 6639645 7026414
* @summary Modeling type implementing missing interfaces
* @library ../../../../lib
* @build JavacTestingAbstractProcessor TestMissingElement
@@ -112,6 +112,7 @@
@Override
public String visitDeclared(DeclaredType t, Void ignore) {
+ checkEqual(t.asElement(), types.asElement(t));
String s = asString(t.asElement());
List<? extends TypeMirror> args = t.getTypeArguments();
if (!args.isEmpty())
@@ -179,6 +180,13 @@
return (e != null && e.getKind() == ElementKind.PACKAGE
&& ((PackageElement) e).isUnnamed());
}
+
+ void checkEqual(Element e1, Element e2) {
+ if (e1 != e2) {
+ throw new AssertionError("elements not equal as expected: "
+ + e1 + ", " + e2);
+ }
+ }
}