@@ -17,17 +17,13 @@ predicate constructFormatTemplateVariableAccess(Raw::FormatArgsExpr parent, int
17
17
unboundNamedFormatArgument ( parent , index , kind , _)
18
18
}
19
19
20
- /**
21
- * A named format argument for which no binding is found in the parent `FormatArgsExpr::getArg(_)`.
22
- * INTERNAL: Do not use.
23
- */
24
- predicate unboundNamedFormatArgument (
25
- Raw:: FormatArgsExpr parent , int index , int kind , NamedFormatArgument arg
20
+ pragma [ nomagic]
21
+ private predicate formatArgsHasArg (
22
+ Raw:: FormatArgsExpr parent , NamedFormatArgument arg , string name , int index , int kind
26
23
) {
27
- exists ( Format format , string name |
28
- not parent . getArg ( _ ) . getName ( ) . getText ( ) = name and
24
+ exists ( Format format |
25
+ parent = Synth :: convertFormatArgsExprToRaw ( format . getParent ( ) ) and
29
26
name = arg .getName ( ) and
30
- Synth:: convertFormatArgsExprToRaw ( format .getParent ( ) ) = parent and
31
27
format .getIndex ( ) = index
32
28
|
33
29
arg = format .getArgumentRef ( ) and kind = 0
@@ -37,3 +33,21 @@ predicate unboundNamedFormatArgument(
37
33
arg = format .getPrecisionArgument ( ) and kind = 2
38
34
)
39
35
}
36
+
37
+ pragma [ nomagic]
38
+ private predicate formatArgsHasArgName ( Raw:: FormatArgsExpr parent , string name ) {
39
+ parent .getArg ( _) .getName ( ) .getText ( ) = name
40
+ }
41
+
42
+ /**
43
+ * A named format argument for which no binding is found in the parent `FormatArgsExpr::getArg(_)`.
44
+ * INTERNAL: Do not use.
45
+ */
46
+ predicate unboundNamedFormatArgument (
47
+ Raw:: FormatArgsExpr parent , int index , int kind , NamedFormatArgument arg
48
+ ) {
49
+ exists ( string name |
50
+ formatArgsHasArg ( parent , arg , name , index , kind ) and
51
+ not formatArgsHasArgName ( parent , name )
52
+ )
53
+ }
0 commit comments