@@ -40,28 +40,25 @@ module Express {
40
40
)
41
41
}
42
42
43
- /**
44
- * Holds if `e` may refer to the given `router` object.
45
- */
46
- private predicate isRouter ( Expr e , RouterDefinition router ) { router .ref ( ) .flowsToExpr ( e ) } // TODO: DataFlow::Node
43
+ /** Holds if `e` may refer to the given `router` object. */
44
+ private predicate isRouter ( DataFlow:: Node e , RouterDefinition router ) { router .ref ( ) .flowsTo ( e ) }
47
45
48
46
/**
49
47
* Holds if `e` may refer to a router object.
50
48
*/
51
- private predicate isRouter ( Expr e ) {
52
- // TODO: DataFlow::Node
49
+ private predicate isRouter ( DataFlow:: Node e ) {
53
50
isRouter ( e , _)
54
51
or
55
- e .getType ( ) .hasUnderlyingType ( "express" , "Router" )
52
+ e .asExpr ( ) . getType ( ) .hasUnderlyingType ( "express" , "Router" )
56
53
or
57
54
// created by `webpack-dev-server`
58
- WebpackDevServer:: webpackDevServerApp ( ) .flowsToExpr ( e )
55
+ WebpackDevServer:: webpackDevServerApp ( ) .flowsTo ( e )
59
56
}
60
57
61
58
/**
62
59
* An expression that refers to a route.
63
60
*/
64
- class RouteExpr extends MethodCallExpr {
61
+ class RouteExpr extends DataFlow :: MethodCallNode {
65
62
RouteExpr ( ) { isRouter ( this ) }
66
63
67
64
/** Gets the router from which this route was created, if it is known. */
@@ -143,15 +140,15 @@ module Express {
143
140
*/
144
141
class RouteSetup extends HTTP:: Servers:: StandardRouteSetup , DataFlow:: MethodCallNode {
145
142
RouteSetup ( ) {
146
- isRouter ( this .getReceiver ( ) . asExpr ( ) ) and
143
+ isRouter ( this .getReceiver ( ) ) and
147
144
this .getMethodName ( ) = routeSetupMethodName ( )
148
145
}
149
146
150
147
/** Gets the path associated with the route. */
151
148
string getPath ( ) { this .getArgument ( 0 ) .mayHaveStringValue ( result ) }
152
149
153
150
/** Gets the router on which handlers are being registered. */
154
- RouterDefinition getRouter ( ) { isRouter ( this .getReceiver ( ) . asExpr ( ) , result ) }
151
+ RouterDefinition getRouter ( ) { isRouter ( this .getReceiver ( ) , result ) }
155
152
156
153
/** Holds if this is a call `use`, such as `app.use(handler)`. */
157
154
predicate isUseCall ( ) { this .getMethodName ( ) = "use" }
@@ -420,7 +417,7 @@ module Express {
420
417
/**
421
418
* Gets the router being registered as a sub-router here, if any.
422
419
*/
423
- RouterDefinition getAsSubRouter ( ) { isRouter ( this , result ) }
420
+ RouterDefinition getAsSubRouter ( ) { isRouter ( this . flow ( ) , result ) }
424
421
}
425
422
426
423
/**
0 commit comments