mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
"Accessibility" has a different meaning for app developers, so we've already deliberately excised it from our diagnostics in favor of terms like "access control" and "access level". Do the same in the compiler now that we aren't constantly pulling things into the release branch. Rename AccessibilityAttr to AccessControlAttr and SetterAccessibilityAttr to SetterAccessAttr, then track down the last few uses of "accessibility" that don't have to do with NSAccessibility. (I left the SourceKit XPC API alone because that's supposed to be more stable.)
86 lines
3.1 KiB
C++
86 lines
3.1 KiB
C++
//===--- MiscDiagnostics.h - AST-Level Diagnostics --------------*- 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
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef SWIFT_SEMA_MISC_DIAGNOSTICS_H
|
|
#define SWIFT_SEMA_MISC_DIAGNOSTICS_H
|
|
|
|
#include "swift/AST/AttrKind.h"
|
|
#include "swift/AST/Identifier.h"
|
|
#include "swift/Basic/LLVM.h"
|
|
#include "swift/Basic/SourceLoc.h"
|
|
#include "llvm/ADT/ArrayRef.h"
|
|
#include "llvm/ADT/Optional.h"
|
|
|
|
namespace swift {
|
|
class AbstractFunctionDecl;
|
|
class ApplyExpr;
|
|
class CallExpr;
|
|
class DeclContext;
|
|
class Expr;
|
|
class InFlightDiagnostic;
|
|
class Stmt;
|
|
class TopLevelCodeDecl;
|
|
class TypeChecker;
|
|
class ValueDecl;
|
|
|
|
/// \brief Emit diagnostics for syntactic restrictions on a given expression.
|
|
void performSyntacticExprDiagnostics(TypeChecker &TC, const Expr *E,
|
|
const DeclContext *DC,
|
|
bool isExprStmt);
|
|
|
|
/// \brief Emit diagnostics for a given statement.
|
|
void performStmtDiagnostics(TypeChecker &TC, const Stmt *S);
|
|
|
|
void performAbstractFuncDeclDiagnostics(TypeChecker &TC,
|
|
AbstractFunctionDecl *AFD);
|
|
|
|
/// Perform diagnostics on the top level code declaration.
|
|
void performTopLevelDeclDiagnostics(TypeChecker &TC, TopLevelCodeDecl *TLCD);
|
|
|
|
/// Emit a fix-it to set the access of \p VD to \p desiredAccess.
|
|
///
|
|
/// This actually updates \p VD as well.
|
|
void fixItAccess(InFlightDiagnostic &diag, ValueDecl *VD,
|
|
AccessLevel desiredAccess, bool isForSetter = false);
|
|
|
|
/// Emit fix-its to correct the argument labels in \p expr, which is the
|
|
/// argument tuple or single argument of a call.
|
|
///
|
|
/// If \p existingDiag is null, the fix-its will be attached to an appropriate
|
|
/// error diagnostic.
|
|
///
|
|
/// \returns true if the issue was diagnosed
|
|
bool diagnoseArgumentLabelError(TypeChecker &TC, const Expr *expr,
|
|
ArrayRef<Identifier> newNames,
|
|
bool isSubscript,
|
|
InFlightDiagnostic *existingDiag = nullptr);
|
|
|
|
/// Attempt to fix the type of \p decl so that it's a valid override for
|
|
/// \p base...but only if we're highly confident that we know what the user
|
|
/// should have written.
|
|
///
|
|
/// \returns true iff any fix-its were attached to \p diag.
|
|
bool fixItOverrideDeclarationTypes(InFlightDiagnostic &diag,
|
|
ValueDecl *decl,
|
|
const ValueDecl *base);
|
|
|
|
/// Emit fix-its to enclose trailing closure in argument parens.
|
|
void fixItEncloseTrailingClosure(TypeChecker &TC,
|
|
InFlightDiagnostic &diag,
|
|
const CallExpr *call,
|
|
Identifier closureLabel);
|
|
|
|
} // namespace swift
|
|
|
|
#endif // SWIFT_SEMA_MISC_DIAGNOSTICS_H
|
|
|