@@ -7,42 +7,47 @@ private import codeql.ruby.ApiGraphs
7
7
private import codeql.ruby.frameworks.internal.Rails
8
8
9
9
/**
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.
18
11
*/
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
+ }
29
34
}
30
- }
31
35
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 ;
35
39
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
+ }
40
44
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
+ }
44
48
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
+ }
48
53
}
0 commit comments