Files
swift-mirror/test/PCMacro/func_decls.swift
Chris Brough 87e8627f2d [5.1] Upgrade PCMacro/PlaygroundTransform to support module/file IDs
This change PCMacro and PlaygroundTransform to return an a moduleID and
fileID in addition to the source location information. The Frontend has
been changed to run PCMacro and PlaygroundTransform on all input files
instead of the main file only.

The tests have been updated to conform to these changes with an addition
of module and file ID specific tests. The Playgrounds related tests were
adjusted to make a module out of the stub interface files since those
files should not have PCMacro and PlaygroundTransform applied to them.

rdar://problem/50821146
2019-05-28 14:20:59 -07:00

64 lines
2.1 KiB
Swift

// RUN: %empty-directory(%t)
// RUN: cp %s %t/main.swift
// RUN: %target-build-swift -force-single-frontend-invocation -module-name PlaygroundSupport -emit-module-path %t/PlaygroundSupport.swiftmodule -parse-as-library -c -o %t/PlaygroundSupport.o %S/Inputs/PCMacroRuntime.swift %S/Inputs/SilentPlaygroundsRuntime.swift
// RUN: %target-build-swift -Xfrontend -pc-macro -o %t/main -I=%t %t/PlaygroundSupport.o %t/main.swift
// RUN: %target-codesign %t/main
// RUN: %target-run %t/main | %FileCheck %s
// RUN: %target-build-swift -Xfrontend -pc-macro -Xfrontend -playground -Xfrontend -debugger-support -o %t/main2 -I=%t %t/PlaygroundSupport.o %t/main.swift
// RUN: %target-codesign %t/main2
// RUN: %target-run %t/main2 | %FileCheck %s
// REQUIRES: executable_test
// FIXME: rdar://problem/30234450 PCMacro tests fail on linux in optimized mode
// UNSUPPORTED: OS=linux-gnu
import PlaygroundSupport
// Lets check that the source ranges are correct on all different kinds of func
// decls.
#sourceLocation(file: "main.swift", line: 8)
func function1(_ x: Int) -> Bool {
return x == 1
}
_ = function1(0)
// CHECK: [12:1-12:17] pc before
// CHECK-NEXT: [8:1-8:33] pc before
// CHECK-NEXT: [8:1-8:33] pc after
// CHECK-NEXT: [9:3-9:16] pc before
// CHECK-NEXT: [9:3-9:16] pc after
// CHECK-NEXT: [12:1-12:17] pc after
func function2(_ x: Int) {
}
_ = function2(0)
// CHECK-NEXT: [24:1-24:17] pc before
// CHECK-NEXT: [21:1-21:25] pc before
// CHECK-NEXT: [21:1-21:25] pc after
// CHECK-NEXT: [24:1-24:17] pc after
func function3(_ x: Int) throws {
}
_ = try! function3(0)
// this test is XFAIL-ed in func_throw_notype and should be updated to 31:32 instead of 31:25 once fixed.
// CHECK-NEXT: [34:1-34:22] pc before
// CHECK-NEXT: [31:1-31:25] pc before
// CHECK-NEXT: [31:1-31:25] pc after
// CHECK-NEXT: [34:1-34:22] pc after
func function4(_ x: Int) throws -> Bool {
return x == 1
}
_ = try! function4(0)
// CHECK-NEXT: [44:1-44:22] pc before
// CHECK-NEXT: [41:1-41:40] pc before
// CHECK-NEXT: [41:1-41:40] pc after
// CHECK-NEXT: [42:3-42:16] pc before
// CHECK-NEXT: [42:3-42:16] pc after
// CHECK-NEXT: [44:1-44:22] pc after