@@ -89,26 +89,26 @@ export class MethodsUsageDataProvider
8989
9090 getTreeItem ( item : MethodsUsageTreeViewItem ) : TreeItem {
9191 if ( isMethodTreeViewItem ( item ) ) {
92+ const { method } = item ;
93+
9294 return {
93- label : `${ item . packageName } .${ item . typeName } .${ item . methodName } ${ item . methodParameters } ` ,
95+ label : `${ method . packageName } .${ method . typeName } .${ method . methodName } ${ method . methodParameters } ` ,
9496 collapsibleState : TreeItemCollapsibleState . Collapsed ,
95- iconPath : this . getModelingStatusIcon ( item ) ,
97+ iconPath : this . getModelingStatusIcon ( method ) ,
9698 } ;
9799 } else {
98- const method = this . getParent ( item ) ;
99- if ( ! method || ! isMethodTreeViewItem ( method ) ) {
100- throw new Error ( "Parent not found for tree item" ) ;
101- }
100+ const { method, usage } = item ;
101+
102102 return {
103- label : item . label ,
104- description : `${ this . relativePathWithinDatabase ( item . url . uri ) } [${
105- item . url . startLine
106- } , ${ item . url . endLine } ]`,
103+ label : usage . label ,
104+ description : `${ this . relativePathWithinDatabase ( usage . url . uri ) } [${
105+ usage . url . startLine
106+ } , ${ usage . url . endLine } ]`,
107107 collapsibleState : TreeItemCollapsibleState . None ,
108108 command : {
109109 title : "Show usage" ,
110110 command : "codeQLModelEditor.jumpToMethod" ,
111- arguments : [ method , item , this . databaseItem ] ,
111+ arguments : [ method , usage , this . databaseItem ] ,
112112 } ,
113113 } ;
114114 }
@@ -146,7 +146,7 @@ export class MethodsUsageDataProvider
146146 getChildren ( item ?: MethodsUsageTreeViewItem ) : MethodsUsageTreeViewItem [ ] {
147147 if ( item === undefined ) {
148148 if ( this . hideModeledMethods ) {
149- return this . sortedTreeItems . filter ( ( api ) => ! api . supported ) ;
149+ return this . sortedTreeItems . filter ( ( api ) => ! api . method . supported ) ;
150150 } else {
151151 return [ ...this . sortedTreeItems ] ;
152152 }
@@ -172,21 +172,24 @@ export class MethodsUsageDataProvider
172172 usage : Usage ,
173173 ) : UsageTreeViewItem | undefined {
174174 const method = this . sortedTreeItems . find (
175- ( m ) => m . signature === methodSignature ,
175+ ( m ) => m . method . signature === methodSignature ,
176176 ) ;
177177 if ( ! method ) {
178178 return undefined ;
179179 }
180180
181- return method . children . find ( ( u ) => usagesAreEqual ( u , usage ) ) ;
181+ return method . children . find ( ( u ) => usagesAreEqual ( u . usage , usage ) ) ;
182182 }
183183}
184184
185- type MethodTreeViewItem = Method & {
185+ type MethodTreeViewItem = {
186+ method : Method ;
186187 children : UsageTreeViewItem [ ] ;
187188} ;
188189
189- type UsageTreeViewItem = Usage & {
190+ type UsageTreeViewItem = {
191+ method : Method ;
192+ usage : Usage ;
190193 parent : MethodTreeViewItem ;
191194} ;
192195
@@ -195,7 +198,7 @@ export type MethodsUsageTreeViewItem = MethodTreeViewItem | UsageTreeViewItem;
195198function isMethodTreeViewItem (
196199 item : MethodsUsageTreeViewItem ,
197200) : item is MethodTreeViewItem {
198- return "children" in item && "usages " in item ;
201+ return "children" in item && "method " in item ;
199202}
200203
201204function usagesAreEqual ( u1 : Usage , u2 : Usage ) : boolean {
@@ -225,12 +228,13 @@ function sortMethodsInGroups(methods: readonly Method[], mode: Mode): Method[] {
225228function createTreeItems ( methods : readonly Method [ ] ) : MethodTreeViewItem [ ] {
226229 return methods . map ( ( method ) => {
227230 const newMethod : MethodTreeViewItem = {
228- ... method ,
231+ method,
229232 children : [ ] ,
230233 } ;
231234
232235 newMethod . children = method . usages . map ( ( usage ) => ( {
233- ...usage ,
236+ method,
237+ usage,
234238 // This needs to be a reference to the parent method, not a copy of it.
235239 parent : newMethod ,
236240 } ) ) ;
0 commit comments