mirror of
https://github.com/github/codeql.git
synced 2026-04-26 17:25:19 +02:00
Swift: Add a test for aliased types.
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
| nominaltype.swift:35:6:35:6 | a | A | A | |
|
||||
| nominaltype.swift:36:6:36:6 | a_alias | A_alias | A_alias | |
|
||||
| nominaltype.swift:37:6:37:6 | a_optional_alias | A_optional_alias | A_optional_alias | |
|
||||
| nominaltype.swift:38:6:38:6 | b1 | B1 | B1 | getABaseType:A |
|
||||
| nominaltype.swift:39:6:39:6 | b2 | B2 | B2 | |
|
||||
| nominaltype.swift:40:6:40:6 | b1_alias | B1_alias | B1_alias | |
|
||||
| nominaltype.swift:41:6:41:6 | b2_alias | B2_alias | B2_alias | |
|
||||
| nominaltype.swift:42:6:42:6 | p | P | P | |
|
||||
| nominaltype.swift:43:6:43:6 | p_alias | P_alias | P_alias | |
|
||||
| nominaltype.swift:44:6:44:6 | c1 | C1 | C1 | getABaseType:P |
|
||||
| nominaltype.swift:45:6:45:6 | c2 | C2 | C2 | |
|
||||
| nominaltype.swift:46:6:46:6 | c1_alias | C1_alias | C1_alias | |
|
||||
| nominaltype.swift:47:6:47:6 | c2_alias | C2_alias | C2_alias | |
|
||||
@@ -0,0 +1,16 @@
|
||||
import swift
|
||||
|
||||
string describe(Type t) {
|
||||
(
|
||||
result = "getAliasedType:" + t.(TypeAliasType).getAliasedType()
|
||||
) or (
|
||||
result = "getABaseType:" + t.(NominalType).getABaseType()
|
||||
)
|
||||
}
|
||||
|
||||
from VarDecl v, Type t
|
||||
where
|
||||
v.getLocation().getFile().getBaseName() != "" and
|
||||
not v.getName() = "self" and
|
||||
t = v.getType()
|
||||
select v, t.toString(), t.getUnderlyingType(), concat(describe(t), ", ")
|
||||
@@ -0,0 +1,48 @@
|
||||
|
||||
class A {
|
||||
}
|
||||
|
||||
typealias A_alias = A
|
||||
|
||||
typealias A_optional_alias = A?
|
||||
|
||||
class B1 : A {
|
||||
}
|
||||
|
||||
class B2 : A_alias {
|
||||
}
|
||||
|
||||
typealias B1_alias = B1
|
||||
|
||||
typealias B2_alias = B2
|
||||
|
||||
protocol P {
|
||||
}
|
||||
|
||||
typealias P_alias = P
|
||||
|
||||
class C1 : P {
|
||||
}
|
||||
|
||||
class C2 : P_alias {
|
||||
}
|
||||
|
||||
typealias C1_alias = C1
|
||||
|
||||
typealias C2_alias = C2
|
||||
|
||||
func test() {
|
||||
var a : A
|
||||
var a_alias : A_alias
|
||||
var a_optional_alias : A_optional_alias
|
||||
var b1 : B1
|
||||
var b2 : B2
|
||||
var b1_alias : B1_alias
|
||||
var b2_alias : B2_alias
|
||||
var p : P
|
||||
var p_alias : P_alias
|
||||
var c1 : C1
|
||||
var c2 : C2
|
||||
var c1_alias : C1_alias
|
||||
var c2_alias : C2_alias
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
| nominaltype.swift:35:6:35:6 | a | A | |
|
||||
| nominaltype.swift:36:6:36:6 | a_alias | A_alias | |
|
||||
| nominaltype.swift:37:6:37:6 | a_optional_alias | A_optional_alias | |
|
||||
| nominaltype.swift:38:6:38:6 | b1 | B1 | getABaseType:A |
|
||||
| nominaltype.swift:39:6:39:6 | b2 | B2 | getABaseType:A_alias |
|
||||
| nominaltype.swift:40:6:40:6 | b1_alias | B1_alias | |
|
||||
| nominaltype.swift:41:6:41:6 | b2_alias | B2_alias | |
|
||||
| nominaltype.swift:44:6:44:6 | c1 | C1 | getABaseType:P |
|
||||
| nominaltype.swift:45:6:45:6 | c2 | C2 | getABaseType:P_alias |
|
||||
| nominaltype.swift:46:6:46:6 | c1_alias | C1_alias | |
|
||||
| nominaltype.swift:47:6:47:6 | c2_alias | C2_alias | |
|
||||
@@ -0,0 +1,19 @@
|
||||
import swift
|
||||
|
||||
string describe(TypeDecl td) {
|
||||
/*(
|
||||
result = "getAliasedType:" + td.(TypeAliasDecl).getAliasedType() TODO: not yet implemented.
|
||||
) or */(
|
||||
result = "getABaseType:" + td.(NominalTypeDecl).getABaseType()
|
||||
)
|
||||
}
|
||||
|
||||
from VarDecl v, TypeDecl td
|
||||
where
|
||||
v.getLocation().getFile().getBaseName() != "" and
|
||||
not v.getName() = "self" and
|
||||
(
|
||||
td = v.getType().(NominalType).getDeclaration() or
|
||||
td = v.getType().(TypeAliasType).getDecl()
|
||||
)
|
||||
select v, td.toString(), concat(describe(td), ", ")
|
||||
Reference in New Issue
Block a user