Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 356381

Summary: AmbiguousFunctionReferenceError for MathLib.Max
Product: z_Archived Reporter: Brian Svihovec <svihovec>
Component: EDTAssignee: Project Inbox <edt.mofmodel-inbox>
Status: CLOSED DUPLICATE QA Contact:
Severity: normal    
Priority: P3 CC: hjiyong, pharmon
Version: unspecified   
Target Milestone: ---   
Hardware: PC   
OS: Windows XP   
Whiteboard:

Description Brian Svihovec CLA 2011-08-31 14:22:26 EDT
Create a file named MathLibMax and add the source listed below.  When the file is generated, the following exception is thrown:

Caused by: org.eclipse.edt.mof.egl.AmbiguousFunctionReferenceError
	at org.eclipse.edt.mof.egl.impl.QualifiedFunctionInvocationImpl.resolveFunction(QualifiedFunctionInvocationImpl.java:116)
	at org.eclipse.edt.mof.egl.impl.QualifiedFunctionInvocationImpl.getTarget(QualifiedFunctionInvocationImpl.java:49)
	... 87 more

Source:
Program MathLibMax
	function main()
		var1 int;
		MathLib.max(var1/2 - 12, 0);
	end
end
Comment 1 Paul Harmon CLA 2011-09-13 14:36:06 EDT
I have fixed this by modifying the algorithm in TypeUtils. The code now attempts to eliminate any function/operation that requires an argument type to be narrowed.
Comment 2 Huang Ji Yong CLA 2011-09-20 22:46:48 EDT
The following test case still have compile errors
------ EGL Source -----------
program testMathlib type BasicProgram {}	
	data any[];
    function main()
    	data.appendElement(1);
        MathLib.max(1, data.getSize() - 50);
    end	
end

------ Exceptions ------------
org.eclipse.edt.mof.codegen.api.TemplateException: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
	at org.eclipse.edt.mof.codegen.api.TemplateContext.doInvoke(TemplateContext.java:384)
	at org.eclipse.edt.mof.codegen.api.TemplateContext.invoke(TemplateContext.java:260)
	at org.eclipse.edt.gen.javascript.templates.StatementTemplate.genStatementNoBraces(StatementTemplate.java:30)
	at sun.reflect.GeneratedMethodAccessor78.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
	at java.lang.reflect.Method.invoke(Method.java:611)
	at org.eclipse.edt.mof.codegen.api.TemplateContext.doInvoke(TemplateContext.java:357)
	at org.eclipse.edt.mof.codegen.api.TemplateContext.invoke(TemplateContext.java:260)
	at org.eclipse.edt.gen.javascript.templates.FunctionTemplate.genFunctionBody(FunctionTemplate.java:40)
	at sun.reflect.GeneratedMethodAccessor156.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
	at java.lang.reflect.Method.invoke(Method.java:611)
	at org.eclipse.edt.mof.codegen.api.TemplateContext.doInvoke(TemplateContext.java:357)
	at org.eclipse.edt.mof.codegen.api.TemplateContext.invoke(TemplateContext.java:260)
	at org.eclipse.edt.gen.javascript.templates.FunctionTemplate.genDeclaration(FunctionTemplate.java:34)
	at sun.reflect.GeneratedMethodAccessor155.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
	at java.lang.reflect.Method.invoke(Method.java:611)
	at org.eclipse.edt.mof.codegen.api.TemplateContext.doInvoke(TemplateContext.java:357)
	at org.eclipse.edt.mof.codegen.api.TemplateContext.invoke(TemplateContext.java:260)
	at org.eclipse.edt.gen.javascript.templates.EGLClassTemplate.genFunction(EGLClassTemplate.java:310)
	at sun.reflect.GeneratedMethodAccessor154.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
	at java.lang.reflect.Method.invoke(Method.java:611)
	at org.eclipse.edt.mof.codegen.api.TemplateContext.doInvoke(TemplateContext.java:359)
	at org.eclipse.edt.gen.EglContext.invoke(EglContext.java:397)
	at org.eclipse.edt.gen.javascript.templates.EGLClassTemplate.genFunctions(EGLClassTemplate.java:304)
	at sun.reflect.GeneratedMethodAccessor372.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
	at java.lang.reflect.Method.invoke(Method.java:611)
	at org.eclipse.edt.mof.codegen.api.TemplateContext.doInvoke(TemplateContext.java:357)
	at org.eclipse.edt.gen.EglContext.invoke(EglContext.java:397)
	at org.eclipse.edt.gen.javascript.templates.EGLClassTemplate.genClassBody(EGLClassTemplate.java:123)
	at sun.reflect.GeneratedMethodAccessor362.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
	at java.lang.reflect.Method.invoke(Method.java:611)
	at org.eclipse.edt.mof.codegen.api.TemplateContext.doInvoke(TemplateContext.java:357)
	at org.eclipse.edt.gen.EglContext.invoke(EglContext.java:397)
	at org.eclipse.edt.gen.javascript.templates.PartTemplate.genPart(PartTemplate.java:42)
	at sun.reflect.GeneratedMethodAccessor331.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
	at java.lang.reflect.Method.invoke(Method.java:611)
	at org.eclipse.edt.mof.codegen.api.TemplateContext.doInvoke(TemplateContext.java:357)
	at org.eclipse.edt.gen.EglContext.invoke(EglContext.java:397)
	at org.eclipse.edt.gen.javascript.JavaScriptGenerator.generate(JavaScriptGenerator.java:80)
	at org.eclipse.edt.gen.AbstractGeneratorCommand.generate(AbstractGeneratorCommand.java:106)
	at org.eclipse.edt.ide.compiler.gen.JavaScriptGenerator.generate(JavaScriptGenerator.java:33)
	at org.eclipse.edt.ide.core.internal.generation.GenerationQueue.invokeGenerators(GenerationQueue.java:264)
	at org.eclipse.edt.ide.core.internal.generation.GenerationQueue.generate(GenerationQueue.java:192)
	at org.eclipse.edt.ide.core.internal.generation.GenerationQueue.generate(GenerationQueue.java:145)
	at org.eclipse.edt.ide.core.internal.generation.AbstractGenerator.build(AbstractGenerator.java:49)
	at org.eclipse.edt.ide.core.internal.generation.GenerationBuilder.cleanBuild(GenerationBuilder.java:100)
	at org.eclipse.edt.ide.core.internal.generation.GenerationBuilder.build(GenerationBuilder.java:50)
	at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:629)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:172)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:203)
	at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:255)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:258)
	at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:311)
	at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:343)
	at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:144)
	at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:242)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Caused by: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
	at org.eclipse.edt.mof.impl.AbstractVisitor.invokeVisit(AbstractVisitor.java:122)
	at org.eclipse.edt.mof.impl.AbstractVisitor.primVisit(AbstractVisitor.java:92)
	at org.eclipse.edt.mof.impl.InternalEObject.accept(InternalEObject.java:206)
	at org.eclipse.edt.mof.impl.InternalEObject.visitChildren(InternalEObject.java:230)
	at org.eclipse.edt.mof.impl.InternalEObject.accept(InternalEObject.java:208)
	at org.eclipse.edt.mof.impl.InternalEObject.visitChildren(InternalEObject.java:230)
	at org.eclipse.edt.mof.impl.InternalEObject.accept(InternalEObject.java:208)
	at org.eclipse.edt.gen.ReorganizeCode.reorgCode(ReorganizeCode.java:72)
	at org.eclipse.edt.gen.javascript.templates.StatementBlockTemplate.processStatements(StatementBlockTemplate.java:48)
	at org.eclipse.edt.gen.javascript.templates.StatementBlockTemplate.genStatementBodyNoBraces(StatementBlockTemplate.java:37)
	at sun.reflect.GeneratedMethodAccessor79.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
	at java.lang.reflect.Method.invoke(Method.java:611)
	at org.eclipse.edt.mof.codegen.api.TemplateContext.doInvoke(TemplateContext.java:357)
	... 64 more
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.GeneratedMethodAccessor120.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
	at java.lang.reflect.Method.invoke(Method.java:611)
	at org.eclipse.edt.mof.impl.AbstractVisitor.invokeVisit(AbstractVisitor.java:119)
	... 77 more
Caused by: java.lang.RuntimeException: org.eclipse.edt.mof.egl.NoSuchFunctionError
	at org.eclipse.edt.mof.egl.impl.QualifiedFunctionInvocationImpl.getTarget(QualifiedFunctionInvocationImpl.java:53)
	at org.eclipse.edt.mof.egl.impl.QualifiedFunctionInvocationImpl.getTarget(QualifiedFunctionInvocationImpl.java:1)
	at org.eclipse.edt.gen.ReorganizeCode.processInvocationConstantParameters(ReorganizeCode.java:816)
	at org.eclipse.edt.gen.ReorganizeCode.processInvocation(ReorganizeCode.java:825)
	at org.eclipse.edt.gen.ReorganizeCode.visit(ReorganizeCode.java:800)
	... 81 more
Caused by: org.eclipse.edt.mof.egl.NoSuchFunctionError
	at org.eclipse.edt.mof.egl.impl.QualifiedFunctionInvocationImpl.resolveFunction(QualifiedFunctionInvocationImpl.java:123)
	at org.eclipse.edt.mof.egl.impl.QualifiedFunctionInvocationImpl.getTarget(QualifiedFunctionInvocationImpl.java:51)
	... 85 more
Comment 3 Paul Harmon CLA 2011-09-22 16:44:04 EDT
duplicate

*** This bug has been marked as a duplicate of bug 355765 ***
Comment 4 Lisa Lasher CLA 2011-11-09 14:20:05 EST
duplicate of a defect that was fixed a month ago, so I am closing it.