Author: hqm
Date: 2007-11-01 10:58:01 -0700 (Thu, 01 Nov 2007)
New Revision: 7080
Modified:
openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/NodeModel.java
openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/ViewSchema.java
Log:
Change 20071101-hqm-8 by [EMAIL PROTECTED] on 2007-11-01 12:08:42 EDT
in /cygdrive/c/users/hqm/openlaszlo/trunk2
for http://svn.openlaszlo.org/openlaszlo/trunk
Summary: fix spurious compiler warning on instance method declaration
New Features:
Bugs Fixed: LPP-5003
Technical Reviewer: jcrowley
QA Reviewer: pkang
Doc Reviewer:
Documentation:
Release Notes:
Details:
Compiling a method on an Instance requires a different check than when
compiling
a class.
Tests:
from bug test case source
smokecheck
amazon
webtop/lzmail client
Modified:
openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/NodeModel.java
===================================================================
---
openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/NodeModel.java
2007-11-01 16:32:12 UTC (rev 7079)
+++
openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/NodeModel.java
2007-11-01 17:58:01 UTC (rev 7080)
@@ -1207,7 +1207,7 @@
// Method declarations inside of class definitions will be already
checked elsewhere,
// in the call from ClassCompiler.updateSchema to schema.addElement
if (!"class".equals(classname)) {
- schema.checkMethodDeclaration(element, classname, name, env);
+ schema.checkInstanceMethodDeclaration(element, classname,
name, env);
}
}
Modified:
openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/ViewSchema.java
===================================================================
---
openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/ViewSchema.java
2007-11-01 16:32:12 UTC (rev 7079)
+++
openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/ViewSchema.java
2007-11-01 17:58:01 UTC (rev 7080)
@@ -216,6 +216,39 @@
}
}
+ /** Checks to do when declaring a method on an instance;
+ * Does the class exist?
+ * Does the superclass allow overriding of this method?
+ */
+ public void checkInstanceMethodDeclaration (Element elt, String classname,
String methodName,
+ CompilationEnvironment env) {
+ ClassModel classModel = getClassModel(classname);
+ if (classModel == null) {
+ throw new RuntimeException(
+/* (non-Javadoc)
+ * @i18n.test
+ * @org-mes="undefined class: " + p[0]
+ */
+ org.openlaszlo.i18n.LaszloMessages.getMessage(
+ ViewSchema.class.getName(),"051018-168", new Object[]
{classname})
+ );
+ }
+ AttributeSpec attrspec = classModel.getAttribute(methodName);
+ if ( attrspec != null) {
+ if (attrspec.type != METHOD_TYPE) {
+ env.warn(
+ "Method named "+methodName+" on class "+classname+
+ " conflicts with attribute with named "+methodName+" and
type "+attrspec.type,
+ elt);
+ }
+ }
+
+ if (!methodOverrideAllowed(classname, methodName)) {
+ env.warn("Method "+classname+"."+methodName+" is overriding a
superclass method"
+ + " of the same name which has been declared
non-overridable" , elt);
+ }
+ }
+
public String getSuperclassName(String className) {
ClassModel model = getClassModel(className);
if (model == null)
@@ -401,7 +434,7 @@
if (mClassMap.get(classname) == null) {
mClassMap.put(classname, info);
} else {
- throw new CompilationError("makeNewStaticClass: duplicate
definition for static class " + classname);
+ throw new CompilationError("makeNewStaticClass: `duplicate
definition for static class " + classname);
}
}
_______________________________________________
Laszlo-checkins mailing list
[email protected]
http://www.openlaszlo.org/mailman/listinfo/laszlo-checkins