File: escape-Type-and-Protocol.swift

package info (click to toggle)
swiftlang 6.0.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,519,992 kB
  • sloc: cpp: 9,107,863; ansic: 2,040,022; asm: 1,135,751; python: 296,500; objc: 82,456; f90: 60,502; lisp: 34,951; pascal: 19,946; sh: 18,133; perl: 7,482; ml: 4,937; javascript: 4,117; makefile: 3,840; awk: 3,535; xml: 914; fortran: 619; cs: 573; ruby: 573
file content (75 lines) | stat: -rw-r--r-- 1,733 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
// RUN: %target-swift-emit-module-interface(%t.swiftinterface) %s -module-name main
// RUN: %target-swift-typecheck-module-from-interface(%t.swiftinterface) -module-name main
// RUN: %FileCheck %s < %t.swiftinterface

// CHECK: public let Type: Swift.Int
public let Type = 0

// CHECK: public struct A {
public struct A {
  // CHECK-NEXT: public struct `Type` {
  // CHECK-NEXT: }
  public struct `Type` {}
// CHECK-NEXT: }
}

// CHECK: public class B {
public class B {
  // CHECK-NEXT: public class `Type` {
  // CHECK: }
  public class `Type` {}

  // CHECK-NEXT: public var `Type`: Swift.Int
  public var `Type` = 0
// CHECK: }
}

// CHECK: public struct C {
public struct C {
  // CHECK: public enum `Type` {
  public enum `Type` {
    // CHECK: }
  }
// CHECK-NEXT: }
}

// CHECK: public struct D {
public struct D {
  // CHECK: public typealias `Type` = Swift.Int
  public typealias `Type` = Int
// CHECK-NEXT: }
}

// CHECK: public protocol BestProtocol {
public protocol BestProtocol {
  // CHECK-NEXT: associatedtype `Type`
  associatedtype `Type`
// CHECK-NEXT: }
}

// CHECK: public enum CoolEnum {
public enum CoolEnum {
  // CHECK-NEXT: case `Type`
  case `Type`
  // CHECK-NEXT: case `Protocol`
  case `Protocol`
  // CHECK-NEXT: case `init`
  case `init`
  // CHECK-NEXT: case `self`
  case `self`

  // We allow Type and Protocol as method names, but we should still print them
  // escaped in case we tighten this restriction.
  // CHECK-NEXT: public func `Type`()
  public func Type() {}
  // CHECK-NEXT: public func `Protocol`()
  public func Protocol() {}
// CHECK: }
}

// CHECK: public enum UncoolEnum {
public enum UncoolEnum {
  // CHECK-NEXT: case `Type`, `Protocol`
  case `Type`, `Protocol`
// CHECK: }
}