Make bad JSNI refs errors
Review at http://gwt-code-reviews.appspot.com/1142802
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@9335 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/javac/JsniChecker.java b/dev/core/src/com/google/gwt/dev/javac/JsniChecker.java
index 6156334..7ec360a 100644
--- a/dev/core/src/com/google/gwt/dev/javac/JsniChecker.java
+++ b/dev/core/src/com/google/gwt/dev/javac/JsniChecker.java
@@ -207,7 +207,7 @@
}
FieldBinding target = getField(clazz, jsniRef);
if (target == null) {
- emitWarning("jsni", "Referencing field '" + jsniRef.className() + "."
+ emitError("JSNI Referencing field '" + jsniRef.className() + "."
+ jsniRef.memberName()
+ "': unable to resolve field, expect subsequent failures");
return;
@@ -231,7 +231,7 @@
assert jsniRef.isMethod();
MethodBinding target = getMethod(clazz, jsniRef);
if (target == null) {
- emitWarning("jsni", "Referencing method '" + jsniRef.className() + "."
+ emitError("JSNI Referencing method '" + jsniRef.className() + "."
+ jsniRef.memberSignature()
+ "': unable to resolve method, expect subsequent failures");
return;
@@ -318,7 +318,7 @@
checkFieldRef(clazz, jsniRef);
}
} else {
- emitWarning("jsni", "Referencing class '" + className
+ emitError("JSNI Referencing class '" + className
+ "': unable to resolve class, expect subsequent failures");
}
}
diff --git a/dev/core/src/com/google/gwt/dev/shell/CompilingClassLoader.java b/dev/core/src/com/google/gwt/dev/shell/CompilingClassLoader.java
index 1e841a0..06a83fd 100644
--- a/dev/core/src/com/google/gwt/dev/shell/CompilingClassLoader.java
+++ b/dev/core/src/com/google/gwt/dev/shell/CompilingClassLoader.java
@@ -135,7 +135,7 @@
JsniRef parsed = JsniRef.parse(jsniMemberRef);
if (parsed == null) {
- logger.log(TreeLogger.WARN, "Malformed JSNI reference '"
+ logger.log(TreeLogger.ERROR, "Malformed JSNI reference '"
+ jsniMemberRef + "'; expect subsequent failures",
new NoSuchFieldError(jsniMemberRef));
return -1;
@@ -155,7 +155,7 @@
* semantics of the hand-written JS.
*/
if (singleJsoImplTypes.contains(canonicalizeClassName(className))) {
- logger.log(TreeLogger.WARN,
+ logger.log(TreeLogger.ERROR,
"Invalid JSNI reference to SingleJsoImpl interface (" + className
+ "); consider using a trampoline. "
+ "Expect subsequent failures.", new NoSuchFieldError(
@@ -166,7 +166,7 @@
int memberId = dispClassInfo.getMemberId(memberName);
if (memberId < 0) {
if (!className.startsWith("java.")) {
- logger.log(TreeLogger.WARN, "Member '" + memberName
+ logger.log(TreeLogger.ERROR, "Member '" + memberName
+ "' in JSNI reference '" + jsniMemberRef
+ "' could not be found; expect subsequent failures",
new NoSuchFieldError(memberName));
@@ -176,7 +176,7 @@
return synthesizeDispId(dispClassInfo.getClassId(), memberId);
}
- logger.log(TreeLogger.WARN, "Class '" + className
+ logger.log(TreeLogger.ERROR, "Class '" + className
+ "' in JSNI reference '" + jsniMemberRef
+ "' could not be found; expect subsequent failures",
new ClassNotFoundException(className));
diff --git a/dev/core/test/com/google/gwt/dev/javac/JsniCheckerTest.java b/dev/core/test/com/google/gwt/dev/javac/JsniCheckerTest.java
index f041ca9..07a8f8a 100644
--- a/dev/core/test/com/google/gwt/dev/javac/JsniCheckerTest.java
+++ b/dev/core/test/com/google/gwt/dev/javac/JsniCheckerTest.java
@@ -270,7 +270,7 @@
code.append("}\n");
// Cannot resolve, missing synthetic enclosing instance.
- shouldGenerateWarning(code, 7, "Referencing method 'Buggy.Inner.new(Z)': "
+ shouldGenerateError(code, 7, "JSNI Referencing method 'Buggy.Inner.new(Z)': "
+ "unable to resolve method, expect subsequent failures");
code = new StringBuffer();
@@ -505,8 +505,8 @@
code.append(" @Foo::x;\n");
code.append(" }-*/;\n");
code.append("}\n");
- shouldGenerateWarning(code, 3,
- "Referencing class 'Foo': unable to resolve class, expect subsequent failures");
+ shouldGenerateError(code, 3,
+ "JSNI Referencing class 'Foo': unable to resolve class, expect subsequent failures");
}
public void testUnresolvedField() {
@@ -516,10 +516,10 @@
code.append(" @Buggy::x;\n");
code.append(" }-*/;\n");
code.append("}\n");
- shouldGenerateWarning(
+ shouldGenerateError(
code,
3,
- "Referencing field 'Buggy.x': unable to resolve field, expect subsequent failures");
+ "JSNI Referencing field 'Buggy.x': unable to resolve field, expect subsequent failures");
}
public void testUnresolvedMethod() {
@@ -529,10 +529,10 @@
code.append(" @Buggy::x(Ljava/lang/String);\n");
code.append(" }-*/;\n");
code.append("}\n");
- shouldGenerateWarning(
+ shouldGenerateError(
code,
3,
- "Referencing method 'Buggy.x(Ljava/lang/String)': unable to resolve method, expect subsequent failures");
+ "JSNI Referencing method 'Buggy.x(Ljava/lang/String)': unable to resolve method, expect subsequent failures");
}
public void testUnsafeAnnotation() {
diff --git a/dev/core/test/com/google/gwt/dev/javac/JsniCollectorTest.java b/dev/core/test/com/google/gwt/dev/javac/JsniCollectorTest.java
index 752f32e..37621d4 100644
--- a/dev/core/test/com/google/gwt/dev/javac/JsniCollectorTest.java
+++ b/dev/core/test/com/google/gwt/dev/javac/JsniCollectorTest.java
@@ -54,9 +54,9 @@
assertEquals(source.indexOf('@'), problem.getSourceStart());
}
assertEquals(3, problem.getSourceLineNumber());
- assertTrue(problem.isWarning());
+ assertTrue(problem.isError());
assertEquals(
- "Referencing method 'Foo.m(Ljava/lang/String)': unable to resolve method, expect subsequent failures",
+ "JSNI Referencing method 'Foo.m(Ljava/lang/String)': unable to resolve method, expect subsequent failures",
problem.getMessage());
}