@@ -7,42 +7,47 @@ private import codeql.ruby.ApiGraphs
77private import codeql.ruby.frameworks.internal.Rails
88
99/**
10- * A `ClassDeclaration` for a class that extends `ActionMailer::Base`.
11- * For example,
12- *
13- * ```rb
14- * class FooMailer < ActionMailer::Base
15- * ...
16- * end
17- * ```
10+ * Provides modeling for the `ActionMailer` library.
1811 */
19- class ActionMailerMailerClass extends ClassDeclaration {
20- ActionMailerMailerClass ( ) {
21- this .getSuperclassExpr ( ) =
22- [
23- API:: getTopLevelMember ( "ActionMailer" ) .getMember ( "Base" ) ,
24- // In Rails applications `ApplicationMailer` typically extends
25- // `ActionMailer::Base`, but we treat it separately in case the
26- // `ApplicationMailer` definition is not in the database.
27- API:: getTopLevelMember ( "ApplicationMailer" )
28- ] .getASubclass ( ) .getAValueReachableFromSource ( ) .asExpr ( ) .getExpr ( )
12+ module ActionMailer {
13+ /**
14+ * A `ClassDeclaration` for a class that extends `ActionMailer::Base`.
15+ * For example,
16+ *
17+ * ```rb
18+ * class FooMailer < ActionMailer::Base
19+ * ...
20+ * end
21+ * ```
22+ */
23+ class MailerClass extends ClassDeclaration {
24+ MailerClass ( ) {
25+ this .getSuperclassExpr ( ) =
26+ [
27+ API:: getTopLevelMember ( "ActionMailer" ) .getMember ( "Base" ) ,
28+ // In Rails applications `ApplicationMailer` typically extends
29+ // `ActionMailer::Base`, but we treat it separately in case the
30+ // `ApplicationMailer` definition is not in the database.
31+ API:: getTopLevelMember ( "ApplicationMailer" )
32+ ] .getASubclass ( ) .getAValueReachableFromSource ( ) .asExpr ( ) .getExpr ( )
33+ }
2934 }
30- }
3135
32- /** A method call with a `self` receiver from within a mailer class */
33- private class ActionMailerContextCall extends MethodCall {
34- private ActionMailerMailerClass mailerClass ;
36+ /** A method call with a `self` receiver from within a mailer class */
37+ private class ContextCall extends MethodCall {
38+ private MailerClass mailerClass ;
3539
36- ActionMailerContextCall ( ) {
37- this .getReceiver ( ) instanceof SelfVariableAccess and
38- this .getEnclosingModule ( ) = mailerClass
39- }
40+ ContextCall ( ) {
41+ this .getReceiver ( ) instanceof SelfVariableAccess and
42+ this .getEnclosingModule ( ) = mailerClass
43+ }
4044
41- /** Gets the mailer class containing this method. */
42- ActionMailerMailerClass getMailerClass ( ) { result = mailerClass }
43- }
45+ /** Gets the mailer class containing this method. */
46+ MailerClass getMailerClass ( ) { result = mailerClass }
47+ }
4448
45- /** A call to `params` from within a mailer. */
46- class ActionMailerParamsCall extends ActionMailerContextCall , ParamsCallImpl {
47- ActionMailerParamsCall ( ) { this .getMethodName ( ) = "params" }
49+ /** A call to `params` from within a mailer. */
50+ class ParamsCall extends ContextCall , ParamsCallImpl {
51+ ParamsCall ( ) { this .getMethodName ( ) = "params" }
52+ }
4853}
0 commit comments