mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
This attribute can be attached to a noncopyable struct to specify that its storage is raw, meaning the type definition is (with some limitations) able to do as it pleases with the storage. This provides a basis for implementing types for things like atomics, locks, and data structures that use inline storage to store conditionally-initialized values. The example in `test/Prototypes/UnfairLock.swift` demonstrates the use of a raw layout type to wrap Darwin's `os_unfair_lock` APIs, allowing a lock value to be stored inside of classes or other types without needing a separate allocation, and using the borrow model to enforce safe access to lock-guarded storage.
70 lines
2.9 KiB
C++
70 lines
2.9 KiB
C++
//===--- DiagnosticsIRGen.def - Diagnostics Text ----------------*- C++ -*-===//
|
|
//
|
|
// This source file is part of the Swift.org open source project
|
|
//
|
|
// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
|
|
// Licensed under Apache License v2.0 with Runtime Library Exception
|
|
//
|
|
// See https://swift.org/LICENSE.txt for license information
|
|
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file defines diagnostics emitted during IR generation.
|
|
// Each diagnostic is described using one of three kinds (error, warning, or
|
|
// note) along with a unique identifier, category, options, and text, and is
|
|
// followed by a signature describing the diagnostic argument kinds.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#define DEFINE_DIAGNOSTIC_MACROS
|
|
#include "DefineDiagnosticMacros.h"
|
|
|
|
ERROR(no_llvm_target,none,
|
|
"error loading LLVM target for triple '%0': %1", (StringRef, StringRef))
|
|
ERROR(error_codegen_init_fail,none,
|
|
"cannot initialize code generation passes for target", ())
|
|
|
|
ERROR(irgen_unimplemented,none,
|
|
"unimplemented IR generation feature %0", (StringRef))
|
|
ERROR(irgen_failure,none, "IR generation failure: %0", (StringRef))
|
|
|
|
ERROR(type_to_verify_not_found,none, "unable to find type '%0' to verify",
|
|
(StringRef))
|
|
ERROR(type_to_verify_ambiguous,none, "type to verify '%0' is ambiguous",
|
|
(StringRef))
|
|
ERROR(type_to_verify_dependent,none,
|
|
"type to verify '%0' has unbound generic parameters",
|
|
(StringRef))
|
|
ERROR(too_few_output_filenames,none,
|
|
"too few output file names specified", ())
|
|
ERROR(no_input_files_for_mt,none,
|
|
"no swift input files for multi-threaded compilation", ())
|
|
|
|
ERROR(alignment_dynamic_type_layout_unsupported,none,
|
|
"@_alignment is not supported on types with dynamic layout", ())
|
|
ERROR(alignment_less_than_natural,none,
|
|
"@_alignment cannot decrease alignment below natural alignment of %0",
|
|
(unsigned))
|
|
ERROR(alignment_more_than_maximum,none,
|
|
"@_alignment cannot increase alignment above maximum alignment of %0",
|
|
(unsigned))
|
|
|
|
ERROR(raw_layout_dynamic_type_layout_unsupported,none,
|
|
"@_rawLayout is not yet supported for layouts dependent on generic types", ())
|
|
|
|
ERROR(temporary_allocation_size_negative,none,
|
|
"allocation capacity must be greater than or equal to zero", ())
|
|
ERROR(temporary_allocation_size_overflow,none,
|
|
"allocation byte count too large", ())
|
|
ERROR(temporary_allocation_alignment_not_positive,none,
|
|
"alignment value must be greater than zero", ())
|
|
ERROR(temporary_allocation_alignment_not_power_of_2,none,
|
|
"alignment value must be a power of two", ())
|
|
|
|
ERROR(explosion_size_oveflow,none,
|
|
"explosion size too large", ())
|
|
|
|
#define UNDEFINE_DIAGNOSTIC_MACROS
|
|
#include "DefineDiagnosticMacros.h"
|