mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
This adds the `__swift::__runtime` inline namespace to the LLVMSupport interfaces. This avoids an ODR violation when LLVM and Swift are in the same address space. It also will aid in the process of pruning the LLVMSupport library by ensuring that accidental leakage of the llvm namespace does not allow us to remove symbols which we rely on.
29 lines
1.0 KiB
C++
29 lines
1.0 KiB
C++
//===-- None.h - Simple null value for implicit construction ------*- C++ -*-=//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file provides None, an enumerator for use in implicit constructors
|
|
// of various (usually templated) types to make such construction more
|
|
// terse.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_ADT_NONE_H
|
|
#define LLVM_ADT_NONE_H
|
|
|
|
inline namespace __swift { inline namespace __runtime {
|
|
namespace llvm {
|
|
/// A simple null object to allow implicit construction of Optional<T>
|
|
/// and similar types without having to spell out the specialization's name.
|
|
// (constant value 1 in an attempt to workaround MSVC build issue... )
|
|
enum class NoneType { None = 1 };
|
|
const NoneType None = NoneType::None;
|
|
}
|
|
}} // swift::runtime
|
|
|
|
#endif
|