mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
The reason why I am doing this is that I am going to be adding support for preconcurrency imports to TransferNonSendable. That implies that we can have preconcurrency import suppression in the SIL pipeline and thus that emitting the diagnostic in Sema is too early. To do this, I introduced a new module pass called DiagnoseUnnecessaryPreconcurrencyImports that runs after the SILFunction pass TransferNonSendable. The reason why I use a module pass is to ensure that TransferNonSendable has run on all functions before we attempt to emit these diagnostics. Then in that pass, we iterate over all of the modules functions and construct a uniqued array of SourceFiles for these functions. Then we iterate over the uniqued SourceFiles and use the already constructed Sema machinery to emit the diagnostic using the source files. rdar://126928265
35 lines
1.1 KiB
C++
35 lines
1.1 KiB
C++
//===--- Concurrency.h ----------------------------------------------------===//
|
|
//
|
|
// This source file is part of the Swift.org open source project
|
|
//
|
|
// Copyright (c) 2014 - 2024 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
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
///
|
|
/// \file
|
|
///
|
|
/// This file defines concurrency utility routines from Sema that are used by
|
|
/// later parts of the compiler like the pass pipeline.
|
|
///
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef SWIFT_SEMA_CONCURRENCY_H
|
|
#define SWIFT_SEMA_CONCURRENCY_H
|
|
|
|
namespace swift {
|
|
|
|
class SourceFile;
|
|
|
|
/// If any of the imports in this source file was @preconcurrency but there were
|
|
/// no diagnostics downgraded or suppressed due to that @preconcurrency, suggest
|
|
/// that the attribute be removed.
|
|
void diagnoseUnnecessaryPreconcurrencyImports(SourceFile &sf);
|
|
|
|
} // namespace swift
|
|
|
|
#endif
|