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:
112112
113113ModuleType :
114114 _extends : Type
115+ module : ModuleDecl
115116
116117PlaceholderType :
117118 _extends : Type
Original file line number Diff line number Diff line change @@ -381,4 +381,14 @@ codeql::OpenedArchetypeType TypeVisitor::translateOpenedArchetypeType(
381381 fillArchetypeType (type, entry);
382382 return entry;
383383}
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+ }
384394} // namespace codeql
Original file line number Diff line number Diff line change @@ -71,6 +71,7 @@ class TypeVisitor : public TypeVisitorBase<TypeVisitor> {
7171 const swift::BuiltinUnsafeValueBufferType& type);
7272 codeql::BuiltinVectorType translateBuiltinVectorType (const swift::BuiltinVectorType& type);
7373 codeql::OpenedArchetypeType translateOpenedArchetypeType (const swift::OpenedArchetypeType& type);
74+ codeql::ModuleType translateModuleType (const swift::ModuleType& type);
7475
7576 private:
7677 void fillType (const swift::TypeBase& type, codeql::Type& entry);
@@ -83,9 +84,9 @@ class TypeVisitor : public TypeVisitorBase<TypeVisitor> {
8384 void emitBoundGenericType (swift::BoundGenericType* type, TrapLabel<BoundGenericTypeTag> label);
8485 void emitAnyGenericType (swift::AnyGenericType* type, TrapLabel<AnyGenericTypeTag> label);
8586
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... );
8990 fillType (type, entry);
9091 return entry;
9192 }
Original file line number Diff line number Diff line change 11// generated by codegen/codegen.py
2+ import codeql.swift.elements.decl.ModuleDecl
23import codeql.swift.elements.type.Type
34
45class ModuleTypeBase extends @module_type, Type {
56 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+ }
614}
Original file line number Diff line number Diff line change @@ -264,7 +264,8 @@ l_value_types( //dir=type
264264);
265265
266266module_types( //dir=type
267- unique int id: @module_type
267+ unique int id: @module_type,
268+ int module: @module_decl ref
268269);
269270
270271placeholder_types( //dir=type
Original file line number Diff line number Diff line change 44predicate toBeTested ( Element e ) {
55 e instanceof File
66 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+ )
812 or
913 exists ( Locatable loc |
1014 loc .getLocation ( ) .getFile ( ) .getName ( ) .matches ( "%swift/ql/test%" ) and
Original file line number Diff line number Diff line change 11| 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