Files
swift-mirror/test/DebugInfo/error_scope.swift
Erik Eckstein 7cceaff5f3 SIL: don't print operand types in textual SIL
Type annotations for instruction operands are omitted, e.g.

```
  %3 = struct $S(%1, %2)
```

Operand types are redundant anyway and were only used for sanity checking in the SIL parser.

But: operand types _are_ printed if the definition of the operand value was not printed yet.
This happens:

* if the block with the definition appears after the block where the operand's instruction is located

* if a block or instruction is printed in isolation, e.g. in a debugger

The old behavior can be restored with `-Xllvm -sil-print-types`.
This option is added to many existing test files which check for operand types in their check-lines.
2024-11-21 18:49:52 +01:00

26 lines
712 B
Swift

// RUN: %target-swift-frontend %s -parse-as-library -g -Xllvm -sil-print-types -emit-sil -o - | %FileCheck %s --check-prefix=CHECK-SIL
public enum Err: Error, Equatable {
case err
}
public func throwing() throws {
throw Err.err
}
func sink<T>(_ t: T) {}
public func f() {
do {
_ = try throwing()
} catch let error as Err {
// CHECK-SIL-DAG: $Err, let, name "error", {{.*}}:[[@LINE-1]]:15, scope [[SCOPE1:[0-9]+]]
// CHECK-SIL-DAG: sil_scope [[SCOPE1]] {{.*}}:[[@LINE-2]]:5
sink(error)
} catch {
// CHECK-SIL-DAG: $any Error, let, name "error", {{.*}}:[[@LINE-1]]:11, scope [[SCOPE2:[0-9]+]]
// CHECK-SIL-DAG: sil_scope [[SCOPE2]] {{.*}}:[[@LINE-2]]:11
sink(error)
}
}