blob: 2a9bb70df292144a9a5bdd2a136258caa56e0b6f [file] [log] [blame]
// RUN: %empty-directory(%t)
// %t.input: "A ---> B" ==> "A"
// RUN: sed -ne '/--->/s/ *--->.*$//p' < %S/Inputs/decl-reconstr-names.txt > %t.input
// %t.check: "A ---> B" ==> "B"
// RUN: sed -ne '/--->/s/^.*---> *//p' < %S/Inputs/decl-reconstr-names.txt > %t.check
// RUN: %target-build-swift -emit-executable %s -g -o %t/DeclReconstr -emit-module
// Input validation tests.
// RUN: not %lldb-moduleimport-test patatino 2>&1 | %FileCheck %s \
// RUN: --check-prefix=INVALID-INPUT
// INVALID-INPUT: patatino No such file or directory
// RUN: not %lldb-moduleimport-test %t/DeclReconstr \
// RUN: --decl-from-mangled=patatino 2>&1 | \
// RUN: %FileCheck %s --check-prefix=INVALID-DECL
// INVALID-DECL: patatino does not exist, exiting.
// RUN: not %lldb-moduleimport-test %t/DeclReconstr \
// RUN: --type-from-mangled=patatino 2>&1 | \
// RUN: %FileCheck %s --check-prefix=INVALID-TYPE
// INVALID-TYPE: patatino does not exist, exiting.
// RUN: %lldb-moduleimport-test %t/DeclReconstr \
// RUN: -decl-from-mangled=%t.input > %t.output 2>&1
// RUN: diff %t.check %t.output
// REQUIRES: executable_test
struct S {
init() {
}
}
func patatino() -> Int {
let s = S()
return 0
}
patatino()
class Foo<T> {
var x : T
init(_ x : T) {
self.x = x
}
}
typealias Patatino<T> = Foo<T>
public struct Outer<T> {
public struct Inner { }
public struct GenericInner<U> { }
public typealias Foo<U> = Outer<U>.Inner
public func blah() {
let foo: Foo<Int> = Outer<Int>.Inner()
}
}
extension Outer.GenericInner {
public typealias Bar = Int
public func useBar() {
let bar: Bar = 7
}
}
// Mangling for generic typealiases.
protocol P {
associatedtype A
}
protocol Q {
associatedtype B: P
typealias ProtocolTypeAliasThing = B.A
}
struct ConformsToP: P {
typealias A = Int
}
struct ConformsToQ: Q {
typealias B = ConformsToP
}
struct Blah {
typealias SomeQ = ConformsToQ
func foo() {
let bar: SomeQ.ProtocolTypeAliasThing? = nil
}
}
func main() -> Int {
var p : Patatino<Int> = Patatino(23);
return 0
}
let _ = main()