Folks,
I have another little bug with OJC. When translating a call to
Math.sqrt, if the argument is a float, it complains. I don't
think it should; the widening-cast from float to double should
be automatic, no? The original code certainly compiled and ran OK.
It produces a warning, but appears to complete the translation OK.
So I guess the warnings are only a nuisance and I can ignore them
safely. But it floods my output a little bit (:-(
Jim
Here is a little test example and the output of running OJC on it,
slightly hand-edited to eliminate irrelevant stuff:
************ Here is the source code that produces the problem
package com.affinnova.EA.Core;
public class Diddle instantiates openjava.mop.OJClass {
public double fiddle(float f) {
return Math.sqrt(f);
}
}
********** Here is the run of OJC translating the above:
C:\dev\coverage>java openjava.ojc.Main Diddle.oj
OpenJava Compiler Version 1.0a build 20011117
Generating parse tree.
..done.
Initializing parse tree.
..done.
Translating callee side
..done.
Translating caller side
no such method sqrt(float) in class java.lang.Math
openjava.mop.NoSuchMemberException: method sqrt(float)
at openjava.ptree.MethodCall.getType(MethodCall.java:237)
at
openjava.ptree.util.ExpansionApplier.getType(ExpansionApplier.java:64
)
at
openjava.ptree.util.ExpansionApplier.evaluateUp(ExpansionApplier.java:
359)
at openjava.ptree.util.EvaluationShuttle.visit(EvaluationShuttle.java:784)
at openjava.ptree.MethodCall.accept(MethodCall.java:183)
at openjava.ptree.NonLeaf.childrenAccept(NonLeaf.java:397)
at openjava.ptree.util.EvaluationShuttle.visit(EvaluationShuttle.java:838)
at openjava.ptree.ReturnStatement.accept(ReturnStatement.java:87)
at openjava.ptree.List.childrenAccept(List.java:258)
at openjava.ptree.util.EvaluationShuttle.visit(EvaluationShuttle.java:860)
at openjava.ptree.StatementList.accept(StatementList.java:135)
at openjava.ptree.NonLeaf.childrenAccept(NonLeaf.java:397)
at openjava.ptree.util.EvaluationShuttle.visit(EvaluationShuttle.java:794)
at openjava.ptree.MethodDeclaration.accept(MethodDeclaration.java:260)
at openjava.ptree.List.childrenAccept(List.java:258)
at openjava.ptree.util.EvaluationShuttle.visit(EvaluationShuttle.java:761)
at
openjava.ptree.MemberDeclarationList.accept(MemberDeclarationList.jav
a:125)
at openjava.ptree.NonLeaf.childrenAccept(NonLeaf.java:397)
at openjava.ptree.util.EvaluationShuttle.visit(EvaluationShuttle.java:551)
at openjava.ptree.ClassDeclaration.accept(ClassDeclaration.java:296)
at openjava.ptree.List.childrenAccept(List.java:258)
at openjava.ptree.util.EvaluationShuttle.visit(EvaluationShuttle.java:562)
at
openjava.ptree.ClassDeclarationList.accept(ClassDeclarationList.java:125)
at openjava.ptree.NonLeaf.childrenAccept(NonLeaf.java:397)
at openjava.ptree.util.EvaluationShuttle.visit(EvaluationShuttle.java:584)
at openjava.ptree.CompilationUnit.accept(CompilationUnit.java:195)
at openjava.ojc.Compiler.translateCallerSide(Compiler.java:483)
at openjava.ojc.Compiler.run(Compiler.java:77)
at openjava.ojc.Main.main(Main.java:37)
Encountered errors during translating caller side.
openjava.ptree.ParseTreeException: method sqrt(float)
at
openjava.ptree.util.ExpansionApplier.getType(ExpansionApplier.java:67
)
at
openjava.ptree.util.ExpansionApplier.evaluateUp(ExpansionApplier.java:
359)
at openjava.ptree.util.EvaluationShuttle.visit(EvaluationShuttle.java:784)
at openjava.ptree.MethodCall.accept(MethodCall.java:183)
at openjava.ptree.NonLeaf.childrenAccept(NonLeaf.java:397)
at openjava.ptree.util.EvaluationShuttle.visit(EvaluationShuttle.java:838)
at openjava.ptree.ReturnStatement.accept(ReturnStatement.java:87)
at openjava.ptree.List.childrenAccept(List.java:258)
at openjava.ptree.util.EvaluationShuttle.visit(EvaluationShuttle.java:860)
at openjava.ptree.StatementList.accept(StatementList.java:135)
at openjava.ptree.NonLeaf.childrenAccept(NonLeaf.java:397)
at openjava.ptree.util.EvaluationShuttle.visit(EvaluationShuttle.java:794)
at openjava.ptree.MethodDeclaration.accept(MethodDeclaration.java:260)
at openjava.ptree.List.childrenAccept(List.java:258)
at openjava.ptree.util.EvaluationShuttle.visit(EvaluationShuttle.java:761)
at
openjava.ptree.MemberDeclarationList.accept(MemberDeclarationList.jav
a:125)
at openjava.ptree.NonLeaf.childrenAccept(NonLeaf.java:397)
at openjava.ptree.util.EvaluationShuttle.visit(EvaluationShuttle.java:551)
at openjava.ptree.ClassDeclaration.accept(ClassDeclaration.java:296)
at openjava.ptree.List.childrenAccept(List.java:258)
at openjava.ptree.util.EvaluationShuttle.visit(EvaluationShuttle.java:562)
at
openjava.ptree.ClassDeclarationList.accept(ClassDeclarationList.java:125)
at openjava.ptree.NonLeaf.childrenAccept(NonLeaf.java:397)
at openjava.ptree.util.EvaluationShuttle.visit(EvaluationShuttle.java:584)
at openjava.ptree.CompilationUnit.accept(CompilationUnit.java:195)
at openjava.ojc.Compiler.translateCallerSide(Compiler.java:483)
at openjava.ojc.Compiler.run(Compiler.java:77)
at openjava.ojc.Main.main(Main.java:37)
..done.
Printing parse tree.
..done.
Compiling into bytecode.
..done.