- Notifications
You must be signed in to change notification settings - Fork 10.5k
/
Copy pathimplicit-builtins-import.swift
21 lines (18 loc) · 853 Bytes
/
implicit-builtins-import.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// This is just an example and documentation of how -parse-stdlib implicitly imports the Builtin module.
// Note that a lot of builtins expect some types to be defined in the stdlib, otherwise the builtin will be unavailable.
// Therefore "-module-name Swift" is significant (otherwise the types won't be find in the module we're building).
//
// Example:
// %target-swift-emit-ir -parse-stdlib %s
// Builtin.unreachable() // <<< error: module 'Builtin' has no member named 'unreachable'
//
// The real problem is that the 'unreachable' builtin needs the Never type (that's its return type).
//
// Example:
// %target-swift-emit-ir -parse-stdlib -module-name Swift %s
// enum Never {}
// Builtin.unreachable() // works
// RUN: %target-swift-emit-ir -parse-stdlib -module-name Swift %s
enumNever{}
Builtin.unreachable()
Builtin.int_trap()