File tree Expand file tree Collapse file tree 13 files changed +46
-9
lines changed
codeql/swift/generated/type Expand file tree Collapse file tree 13 files changed +46
-9
lines changed Original file line number Diff line number Diff line change @@ -112,6 +112,7 @@ LValueType:
112
112
113
113
ModuleType :
114
114
_extends : Type
115
+ module : ModuleDecl
115
116
116
117
PlaceholderType :
117
118
_extends : Type
Original file line number Diff line number Diff line change @@ -381,4 +381,14 @@ codeql::OpenedArchetypeType TypeVisitor::translateOpenedArchetypeType(
381
381
fillArchetypeType (type, entry);
382
382
return entry;
383
383
}
384
+
385
+ codeql::ModuleType TypeVisitor::translateModuleType (const swift::ModuleType& type) {
386
+ auto key = type.getModule ()->getRealName ().str ().str ();
387
+ if (type.getModule ()->isNonSwiftModule ()) {
388
+ key += " |clang" ;
389
+ }
390
+ auto entry = createTypeEntry (type, key);
391
+ entry.module = dispatcher_.fetchLabel (type.getModule ());
392
+ return entry;
393
+ }
384
394
} // namespace codeql
Original file line number Diff line number Diff line change @@ -71,6 +71,7 @@ class TypeVisitor : public TypeVisitorBase<TypeVisitor> {
71
71
const swift::BuiltinUnsafeValueBufferType& type);
72
72
codeql::BuiltinVectorType translateBuiltinVectorType (const swift::BuiltinVectorType& type);
73
73
codeql::OpenedArchetypeType translateOpenedArchetypeType (const swift::OpenedArchetypeType& type);
74
+ codeql::ModuleType translateModuleType (const swift::ModuleType& type);
74
75
75
76
private:
76
77
void fillType (const swift::TypeBase& type, codeql::Type& entry);
@@ -83,9 +84,9 @@ class TypeVisitor : public TypeVisitorBase<TypeVisitor> {
83
84
void emitBoundGenericType (swift::BoundGenericType* type, TrapLabel<BoundGenericTypeTag> label);
84
85
void emitAnyGenericType (swift::AnyGenericType* type, TrapLabel<AnyGenericTypeTag> label);
85
86
86
- template <typename T>
87
- auto createTypeEntry (const T& type) {
88
- auto entry = dispatcher_.createEntry (type);
87
+ template <typename T, typename ... Args >
88
+ auto createTypeEntry (const T& type, const Args&... args ) {
89
+ auto entry = dispatcher_.createEntry (type, args... );
89
90
fillType (type, entry);
90
91
return entry;
91
92
}
Original file line number Diff line number Diff line change 1
1
// generated by codegen/codegen.py
2
+ import codeql.swift.elements.decl.ModuleDecl
2
3
import codeql.swift.elements.type.Type
3
4
4
5
class ModuleTypeBase extends @module_type, Type {
5
6
override string getAPrimaryQlClass ( ) { result = "ModuleType" }
7
+
8
+ ModuleDecl getModule ( ) {
9
+ exists ( ModuleDecl x |
10
+ module_types ( this , x ) and
11
+ result = x .resolve ( )
12
+ )
13
+ }
6
14
}
Original file line number Diff line number Diff line change @@ -264,7 +264,8 @@ l_value_types( //dir=type
264
264
);
265
265
266
266
module_types( //dir=type
267
- unique int id: @module_type
267
+ unique int id: @module_type,
268
+ int module: @module_decl ref
268
269
);
269
270
270
271
placeholder_types( //dir=type
Original file line number Diff line number Diff line change 4
4
predicate toBeTested ( Element e ) {
5
5
e instanceof File
6
6
or
7
- exists ( ModuleDecl m | m = e and not m .isBuiltinModule ( ) and not m .isSystemModule ( ) )
7
+ exists ( ModuleDecl m |
8
+ not m .isBuiltinModule ( ) and
9
+ not m .isSystemModule ( ) and
10
+ ( m = e or m .getInterfaceType ( ) = e )
11
+ )
8
12
or
9
13
exists ( Locatable loc |
10
14
loc .getLocation ( ) .getFile ( ) .getName ( ) .matches ( "%swift/ql/test%" ) and
Original file line number Diff line number Diff line change 1
1
| file://:0:0:0:0 | Foo | getInterfaceType: | module<Foo> | getName: | Foo | isBuiltinModule: | no | isSystemModule: | no |
2
+ | file://:0:0:0:0 | default_module_name | getInterfaceType: | module<default_module_name> | getName: | default_module_name | isBuiltinModule: | no | isSystemModule: | no |
Load Diff This file was deleted.
Original file line number Diff line number Diff line change
1
+ | module<Foo> | getName: | module<Foo> | getCanonicalType: | module<Foo> | getModule: | file://:0:0:0:0 | Foo |
2
+ | module<default_module_name> | getName: | module<default_module_name> | getCanonicalType: | module<default_module_name> | getModule: | file://:0:0:0:0 | default_module_name |
You can’t perform that action at this time.
0 commit comments