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

Bug 353203

Summary: Function ids incorrectly include "this." qualifier
Product: z_Archived Reporter: Scott Greer <greer>
Component: EDTAssignee: Project Inbox <edt.mofmodel-inbox>
Status: CLOSED FIXED QA Contact:
Severity: blocker    
Priority: P3 CC: pharmon
Version: unspecified   
Target Milestone: ---   
Hardware: PC   
OS: Windows XP   
Whiteboard:
Bug Depends on:    
Bug Blocks: 352125    

Description Scott Greer CLA 2011-07-27 09:01:44 EDT
In Button.egl, there is logic that invokes functions inherited from RUIWidget, such as the call below to cleanBiDiMarkers

	private function getText() returns (String)
		if(this.textLayout == "Visual" || this.reverseTextDirection == "Yes")
			this.cleanBiDiMarkers();
		end			
		return ( getAttribute("value") as string);
	end  


This is misrepresented in the IR as follows;  note that the id of the function invocation is encoded as id="this.setBiDiMarkers".   I've stepped thru the function resolution code and confirmed that this does prevent the invoked function from being found.

				<trueBranch ID="74" eClass="org.eclipse.edt.mof.egl.StatementBlock" >
					<annotations ID="75" eClass="dynMof:org.eclipse.edt.mof.egl.Annotation:EGL_Location" len="i:96" off="i:889" line="i:28" />
					<container IDREF="5"/>
					<statements ID="76" eClass="org.eclipse.edt.mof.egl.FunctionStatement" >
						<annotations ID="77" eClass="dynMof:org.eclipse.edt.mof.egl.Annotation:EGL_Location" len="i:50" off="i:927" line="i:29" />
						<container IDREF="5"/>
						<expr ID="78" eClass="org.eclipse.edt.mof.egl.QualifiedFunctionInvocation" id="this.setBiDiMarkers" >
							<annotations ID="79" eClass="dynMof:org.eclipse.edt.mof.egl.Annotation:EGL_Location" len="i:49" off="i:927" line="i:29" />
							<arguments ID="80" eClass="org.eclipse.edt.mof.egl.MemberName" id="isVisual" >
								<annotations ID="81" eClass="dynMof:org.eclipse.edt.mof.egl.Annotation:EGL_Location" len="i:8" off="i:947" line="i:29" />
								<member IDREF="31"/>
							</arguments>
							<arguments ID="82" eClass="org.eclipse.edt.mof.egl.MemberName" id="isReverseDirection" >
								<annotations ID="83" eClass="dynMof:org.eclipse.edt.mof.egl.Annotation:EGL_Location" len="i:18" off="i:957" line="i:29" />
								<member IDREF="50"/>
							</arguments>
							<qualifier ID="84" eClass="org.eclipse.edt.mof.egl.ThisExpression" >
								<thisObject IDREF="1"/>
							</qualifier>
						</expr>
					</statements>
				</trueBranch>
Comment 1 Paul Harmon CLA 2011-07-27 13:20:33 EDT
I have updated EGL2MofExpression to fix this
Comment 2 Scott Greer CLA 2011-07-30 14:19:52 EDT
Verified fix.