- Notifications
You must be signed in to change notification settings - Fork 10.5k
/
Copy pathmacro_plugin_broken.swift
39 lines (30 loc) · 1.37 KB
/
macro_plugin_broken.swift
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
// REQUIRES: swift_swift_parser
// REQUIRES: swift_feature_Macros
// RUN: %empty-directory(%t)
// RUN: split-file %s %t
// RUN: %host-build-swift \
// RUN: -swift-version 5 -o %t/broken-plugin \
// RUN: -module-name=TestPlugin \
// RUN: %t/broken_plugin.swift
// RUN: not %target-swift-frontend \
// RUN: -typecheck \
// RUN: -swift-version 5 -enable-experimental-feature Macros \
// RUN: -load-plugin-executable %t/broken-plugin#TestPlugin \
// RUN: -module-name MyApp \
// RUN: -serialize-diagnostics-path %t/macro_expand.dia \
// RUN: %t/test.swift
// RUN: c-index-test -read-diagnostics %t/macro_expand.dia 2>&1 | %FileCheck -check-prefix CHECK %s
// CHECK: test.swift:1:33: warning: external macro implementation type 'TestPlugin.FooMacro' could not be found for macro 'fooMacro'; '{{.*}}broken-plugin' produced malformed response
// CHECK: test.swift:4:7: error: external macro implementation type 'TestPlugin.FooMacro' could not be found for macro 'fooMacro'; '{{.*}}broken-plugin' produced malformed response
// CHECK: +-{{.+}}test.swift:1:33: note: 'fooMacro' declared here
//--- test.swift
@freestanding(expression) macro fooMacro(_:Any)->String= #externalMacro(module:"TestPlugin", type:"FooMacro")
func test(){
_ = #fooMacro(1)
}
//--- broken_plugin.swift
func minusTen(value:UInt)->UInt{
// Causes crash.
return value -10
}
_ =minusTen(value:5)