Skip to content

Conversation

@jeongsoolee09
Copy link
Contributor

What This PR Contributes

  1. Add a fallback case to UI5BindingPath.getNode/0 where a binding path to a local model whose contents are not statically visible can still be traced to the model anyways
  2. Fix UI5 AMD module inheritance:
    1. Support reasoning of "A controller that extends another controller is also a controller"
    2. Support reasoning of "A control that extends another control is also a control"
    3. Support reasoning of "A controller C's supermodule (some base controller)'s owner component is C's owner component"
    4. Fully support import of custom modules that avoids pitfalls due to AMD-style import path conventions
  3. Add a flow step that jumps from x in f() { this.f = x } to this.f in g() { this.f } where f and g are different methods of a same module

Future Works

- ["Renderer", "Control", "Member[extend].Argument[1].Member[renderer]"]
- ["Renderer", "sap/ui/core/RenderManager", "Member[extend].Argument[1].Member[renderer]"]
- ["Renderer", "sap/ui/core/Renderer", "Member[extend].Argument[1]"]
- ["Renderer", "sap/ui/core/Renderer", "Member[extend].Argument[1]"] # ?
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe add a comment as to why there is a question mark here, or if its not needed anymore, rm

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This turned out to be necessary to cover cases with custom renderers such as xss-indirect-control. Removed the question mark comment in response.


PropRead getOneTime() { result = this.asSourceNode().getAPropertyRead("OneTime") }
}
override string getPathString() { result = "TODO" }
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this something we can do in this PR?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, it falls outside its scope. Also, JSON models are largely favored over XML models, so we'd wait until we come across major usage of it.

}
}

private class UserDataFromRemoteControlAPISource extends RemoteFlowSource {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think some QL docs on the extensions of RemoteFlowSource in this file would be helpful

@@ -0,0 +1,12 @@
sap.ui.define([
"sap/ui/core/UIComponent"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

love the extra test additions, quick question, do we have a better place where these might live though? they arent event bus specific, right, if its odata model testing specifically - maybe we should have a lib test for that? not sure - just thinking out loud!

}
}

class PublishedEventToEventSubscribedEventData extends DataFlow::SharedFlowStep {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe also add QL doc here

Copy link
Contributor

@knewbury01 knewbury01 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nice work @jeongsoolee09 ! left some small initial comments

@data-douser data-douser mentioned this pull request Jan 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants