Remove CBasicBridging and CASTBridging

Merge with BasicBridging and ASTBridging
respectively. The changes here should be pretty
uncontroversial, I tried to keep it to just moving
code about.
This commit is contained in:
Hamish Knight
2023-10-30 23:49:56 +00:00
parent cae5d33368
commit 6afde8a6d2
30 changed files with 2543 additions and 2619 deletions

View File

@@ -4,20 +4,12 @@ module BasicBridging {
export *
}
module CBasicBridging {
header "swift/Basic/CBasicBridging.h"
}
module ASTBridging {
header "swift/AST/ASTBridging.h"
requires cplusplus
export *
}
module CASTBridging {
header "swift/AST/CASTBridging.h"
}
module SILBridging {
header "swift/SIL/SILBridging.h"
requires cplusplus

View File

@@ -32,6 +32,93 @@ namespace swift {
class VarDecl;
}
//===----------------------------------------------------------------------===//
// Identifier
//===----------------------------------------------------------------------===//
typedef struct BridgedIdentifier {
const void *_Nullable raw;
} BridgedIdentifier;
//===----------------------------------------------------------------------===//
// ASTContext
//===----------------------------------------------------------------------===//
typedef struct BridgedASTContext {
void *_Nonnull raw;
} BridgedASTContext;
SWIFT_NAME("BridgedASTContext.getIdentifier(self:_:)")
BridgedIdentifier ASTContext_getIdentifier(BridgedASTContext cContext,
BridgedStringRef cStr);
SWIFT_NAME("BridgedASTContext.langOptsHasFeature(self:_:)")
bool ASTContext_langOptsHasFeature(BridgedASTContext cContext,
BridgedFeature feature);
//===----------------------------------------------------------------------===//
// AST nodes
//===----------------------------------------------------------------------===//
// Define the bridging wrappers for each AST node.
#define AST_BRIDGING_WRAPPER_NONNULL(Name) \
typedef struct { \
void *_Nonnull raw; \
} Bridged##Name;
// For nullable nodes, define both a nullable and non-null variant.
#define AST_BRIDGING_WRAPPER_NULLABLE(Name) \
typedef struct { \
void *_Nullable raw; \
} BridgedNullable##Name; \
\
typedef struct { \
void *_Nonnull raw; \
} Bridged##Name;
#include "swift/AST/ASTBridgingWrappers.def"
// Declare `.asDecl` on each BridgedXXXDecl type, which upcasts a wrapper for
// a Decl subclass to a BridgedDecl.
#define DECL(Id, Parent) \
SWIFT_NAME("getter:Bridged" #Id "Decl.asDecl(self:)") \
BridgedDecl Id##Decl_asDecl(Bridged##Id##Decl decl);
#define ABSTRACT_DECL(Id, Parent) DECL(Id, Parent)
#include "swift/AST/DeclNodes.def"
// Declare `.asDeclContext` on each BridgedXXXDecl type that's also a
// DeclContext.
#define DECL(Id, Parent)
#define CONTEXT_DECL(Id, Parent) \
SWIFT_NAME("getter:Bridged" #Id "Decl.asDeclContext(self:)") \
BridgedDeclContext Id##Decl_asDeclContext(Bridged##Id##Decl decl);
#define ABSTRACT_CONTEXT_DECL(Id, Parent) CONTEXT_DECL(Id, Parent)
#include "swift/AST/DeclNodes.def"
// Declare `.asStmt` on each BridgedXXXStmt type, which upcasts a wrapper for
// a Stmt subclass to a BridgedStmt.
#define STMT(Id, Parent) \
SWIFT_NAME("getter:Bridged" #Id "Stmt.asStmt(self:)") \
BridgedStmt Id##Stmt_asStmt(Bridged##Id##Stmt stmt);
#define ABSTRACT_STMT(Id, Parent) STMT(Id, Parent)
#include "swift/AST/StmtNodes.def"
// Declare `.asExpr` on each BridgedXXXExpr type, which upcasts a wrapper for
// a Expr subclass to a BridgedExpr.
#define EXPR(Id, Parent) \
SWIFT_NAME("getter:Bridged" #Id "Expr.asExpr(self:)") \
BridgedExpr Id##Expr_asExpr(Bridged##Id##Expr expr);
#define ABSTRACT_EXPR(Id, Parent) EXPR(Id, Parent)
#include "swift/AST/ExprNodes.def"
// Declare `.asTypeRepr` on each BridgedXXXTypeRepr type, which upcasts a
// wrapper for a TypeRepr subclass to a BridgedTypeRepr.
#define TYPEREPR(Id, Parent) \
SWIFT_NAME("getter:Bridged" #Id "TypeRepr.asTypeRepr(self:)") \
BridgedTypeRepr Id##TypeRepr_asTypeRepr(Bridged##Id##TypeRepr typeRepr);
#define ABSTRACT_TYPEREPR(Id, Parent) TYPEREPR(Id, Parent)
#include "swift/AST/TypeReprNodes.def"
//===----------------------------------------------------------------------===//
// Diagnostic Engine
//===----------------------------------------------------------------------===//
@@ -79,6 +166,19 @@ public:
BridgedDiagnosticFixIt(BridgedSourceLoc start, uint32_t length, BridgedStringRef text);
};
/// Diagnostic severity when reporting diagnostics.
typedef enum ENUM_EXTENSIBILITY_ATTR(open) BridgedDiagnosticSeverity : size_t {
BridgedFatalError,
BridgedError,
BridgedWarning,
BridgedRemark,
BridgedNote,
} BridgedDiagnosticSeverity;
typedef struct BridgedDiagnostic {
void *_Nonnull raw;
} BridgedDiagnostic;
// FIXME: Can we bridge InFlightDiagnostic?
void DiagnosticEngine_diagnose(BridgedDiagnosticEngine, BridgedSourceLoc loc,
BridgedDiagID diagID, BridgedArrayRef arguments,
@@ -88,6 +188,33 @@ void DiagnosticEngine_diagnose(BridgedDiagnosticEngine, BridgedSourceLoc loc,
bool DiagnosticEngine_hadAnyError(BridgedDiagnosticEngine);
/// Create a new diagnostic with the given severity, location, and diagnostic
/// text.
///
/// \returns a diagnostic instance that can be extended with additional
/// information and then must be finished via \c SwiftDiagnostic_finish.
SWIFT_NAME("BridgedDiagnostic.init(at:message:severity:engine:)")
BridgedDiagnostic Diagnostic_create(BridgedSourceLoc cLoc,
BridgedStringRef cText,
BridgedDiagnosticSeverity severity,
BridgedDiagnosticEngine cDiags);
/// Highlight a source range as part of the diagnostic.
SWIFT_NAME("BridgedDiagnostic.highlight(self:start:end:)")
void Diagnostic_highlight(BridgedDiagnostic cDiag, BridgedSourceLoc cStartLoc,
BridgedSourceLoc cEndLoc);
/// Add a Fix-It to replace a source range as part of the diagnostic.
SWIFT_NAME("BridgedDiagnostic.fixItReplace(self:start:end:replacement:)")
void Diagnostic_fixItReplace(BridgedDiagnostic cDiag,
BridgedSourceLoc cStartLoc,
BridgedSourceLoc cEndLoc,
BridgedStringRef cReplaceText);
/// Finish the given diagnostic and emit it.
SWIFT_NAME("BridgedDiagnostic.finish(self:)")
void Diagnostic_finish(BridgedDiagnostic cDiag);
//===----------------------------------------------------------------------===//
// NominalTypeDecl
//===----------------------------------------------------------------------===//
@@ -115,6 +242,10 @@ SWIFT_NAME("BridgedNominalTypeDecl.isGlobalActor(self:)")
BRIDGED_INLINE
bool BridgedNominalTypeDecl_isGlobalActor(BridgedNominalTypeDecl decl);
SWIFT_NAME("BridgedNominalTypeDecl.setParsedMembers(self:_:)")
void NominalTypeDecl_setParsedMembers(BridgedNominalTypeDecl decl,
BridgedArrayRef members);
//===----------------------------------------------------------------------===//
// VarDecl
//===----------------------------------------------------------------------===//
@@ -145,6 +276,669 @@ public:
#endif
};
//===----------------------------------------------------------------------===//
// Misc
//===----------------------------------------------------------------------===//
typedef struct {
BridgedIdentifier Name;
BridgedSourceLoc NameLoc;
BridgedIdentifier SecondName;
BridgedSourceLoc SecondNameLoc;
BridgedSourceLoc UnderscoreLoc;
BridgedSourceLoc ColonLoc;
BridgedTypeRepr Type;
BridgedSourceLoc TrailingCommaLoc;
} BridgedTupleTypeElement;
typedef enum ENUM_EXTENSIBILITY_ATTR(open) BridgedRequirementReprKind : size_t {
/// A type bound T : P, where T is a type that depends on a generic
/// parameter and P is some type that should bound T, either as a concrete
/// supertype or a protocol to which T must conform.
BridgedRequirementReprKindTypeConstraint,
/// A same-type requirement T == U, where T and U are types that shall be
/// equivalent.
BridgedRequirementReprKindSameType,
/// A layout bound T : L, where T is a type that depends on a generic
/// parameter and L is some layout specification that should bound T.
BridgedRequirementReprKindLayoutConstraint,
// Note: there is code that packs this enum in a 2-bit bitfield. Audit users
// when adding enumerators.
} BridgedRequirementReprKind;
typedef struct {
BridgedSourceLoc SeparatorLoc;
BridgedRequirementReprKind Kind;
BridgedTypeRepr FirstType;
BridgedTypeRepr SecondType;
// FIXME: Handle Layout Requirements
} BridgedRequirementRepr;
typedef enum ENUM_EXTENSIBILITY_ATTR(open) BridgedMacroDefinitionKind : size_t {
/// An expanded macro.
BridgedExpandedMacro = 0,
/// An external macro, spelled with either the old spelling (Module.Type)
/// or the new spelling `#externalMacro(module: "Module", type: "Type")`.
BridgedExternalMacro,
/// The builtin definition for "externalMacro".
BridgedBuiltinExternalMacro
} BridgedMacroDefinitionKind;
/// Bridged parameter specifiers
typedef enum ENUM_EXTENSIBILITY_ATTR(open) BridgedAttributedTypeSpecifier : size_t {
BridgedAttributedTypeSpecifierInOut,
BridgedAttributedTypeSpecifierBorrowing,
BridgedAttributedTypeSpecifierConsuming,
BridgedAttributedTypeSpecifierLegacyShared,
BridgedAttributedTypeSpecifierLegacyOwned,
BridgedAttributedTypeSpecifierConst,
BridgedAttributedTypeSpecifierIsolated,
} BridgedAttributedTypeSpecifier;
// Bridged type attribute kinds, which mirror TypeAttrKind exactly.
typedef enum ENUM_EXTENSIBILITY_ATTR(closed) BridgedTypeAttrKind : size_t {
BridgedTypeAttrKind_autoclosure,
BridgedTypeAttrKind_convention,
BridgedTypeAttrKind_noescape,
BridgedTypeAttrKind_escaping,
BridgedTypeAttrKind_differentiable,
BridgedTypeAttrKind_noDerivative,
BridgedTypeAttrKind_async,
BridgedTypeAttrKind_Sendable,
BridgedTypeAttrKind_retroactive,
BridgedTypeAttrKind_unchecked,
BridgedTypeAttrKind__local,
BridgedTypeAttrKind__noMetadata,
BridgedTypeAttrKind__opaqueReturnTypeOf,
BridgedTypeAttrKind_block_storage,
BridgedTypeAttrKind_box,
BridgedTypeAttrKind_dynamic_self,
BridgedTypeAttrKind_sil_weak,
BridgedTypeAttrKind_sil_unowned,
BridgedTypeAttrKind_sil_unmanaged,
BridgedTypeAttrKind_error,
BridgedTypeAttrKind_error_indirect,
BridgedTypeAttrKind_error_unowned,
BridgedTypeAttrKind_out,
BridgedTypeAttrKind_direct,
BridgedTypeAttrKind_in,
BridgedTypeAttrKind_inout,
BridgedTypeAttrKind_inout_aliasable,
BridgedTypeAttrKind_in_guaranteed,
BridgedTypeAttrKind_in_constant,
BridgedTypeAttrKind_pack_owned,
BridgedTypeAttrKind_pack_guaranteed,
BridgedTypeAttrKind_pack_inout,
BridgedTypeAttrKind_pack_out,
BridgedTypeAttrKind_owned,
BridgedTypeAttrKind_unowned_inner_pointer,
BridgedTypeAttrKind_guaranteed,
BridgedTypeAttrKind_autoreleased,
BridgedTypeAttrKind_callee_owned,
BridgedTypeAttrKind_callee_guaranteed,
BridgedTypeAttrKind_objc_metatype,
BridgedTypeAttrKind_opened,
BridgedTypeAttrKind_pack_element,
BridgedTypeAttrKind_pseudogeneric,
BridgedTypeAttrKind_unimplementable,
BridgedTypeAttrKind_yields,
BridgedTypeAttrKind_yield_once,
BridgedTypeAttrKind_yield_many,
BridgedTypeAttrKind_captures_generics,
BridgedTypeAttrKind_moveOnly,
BridgedTypeAttrKind_thin,
BridgedTypeAttrKind_thick,
BridgedTypeAttrKind_Count
} BridgedTypeAttrKind;
typedef enum ENUM_EXTENSIBILITY_ATTR(open) ASTNodeKind : size_t {
ASTNodeKindExpr,
ASTNodeKindStmt,
ASTNodeKindDecl
} ASTNodeKind;
typedef struct BridgedASTNode {
void *_Nonnull ptr;
ASTNodeKind kind;
} BridgedASTNode;
typedef struct BridgedTypeAttributes {
void *_Nonnull raw;
} BridgedTypeAttributes;
struct BridgedIdentifierAndSourceLoc {
BridgedIdentifier name;
BridgedSourceLoc nameLoc;
};
SWIFT_NAME(
"BridgedTopLevelCodeDecl.createParsed(_:declContext:startLoc:stmt:endLoc:)")
BridgedTopLevelCodeDecl
TopLevelCodeDecl_createStmt(BridgedASTContext cContext,
BridgedDeclContext cDeclContext,
BridgedSourceLoc cStartLoc, BridgedStmt statement,
BridgedSourceLoc cEndLoc);
SWIFT_NAME(
"BridgedTopLevelCodeDecl.createParsed(_:declContext:startLoc:expr:endLoc:)")
BridgedTopLevelCodeDecl
TopLevelCodeDecl_createExpr(BridgedASTContext cContext,
BridgedDeclContext cDeclContext,
BridgedSourceLoc cStartLoc, BridgedExpr expression,
BridgedSourceLoc cEndLoc);
SWIFT_NAME("BridgedReturnStmt.createParsed(_:returnKeywordLoc:expr:)")
BridgedReturnStmt ReturnStmt_createParsed(BridgedASTContext cContext,
BridgedSourceLoc cLoc,
BridgedNullableExpr expr);
SWIFT_NAME("BridgedSequenceExpr.createParsed(_:exprs:)")
BridgedSequenceExpr SequenceExpr_createParsed(BridgedASTContext cContext,
BridgedArrayRef exprs);
SWIFT_NAME("BridgedTupleExpr.createParsed(_:leftParenLoc:exprs:labels:"
"labelLocs:rightParenLoc:)")
BridgedTupleExpr
TupleExpr_createParsed(BridgedASTContext cContext, BridgedSourceLoc cLParen,
BridgedArrayRef subs, BridgedArrayRef names,
BridgedArrayRef cNameLocs, BridgedSourceLoc cRParen);
SWIFT_NAME("BridgedCallExpr.createParsed(_:fn:args:)")
BridgedCallExpr CallExpr_createParsed(BridgedASTContext cContext,
BridgedExpr fn, BridgedTupleExpr args);
SWIFT_NAME("BridgedUnresolvedDeclRefExpr.createParsed(_:base:loc:)")
BridgedUnresolvedDeclRefExpr UnresolvedDeclRefExpr_createParsed(
BridgedASTContext cContext, BridgedIdentifier base, BridgedSourceLoc cLoc);
SWIFT_NAME("BridgedStringLiteralExpr.createParsed(_:value:loc:)")
BridgedStringLiteralExpr
StringLiteralExpr_createParsed(BridgedASTContext cContext,
BridgedStringRef cStr,
BridgedSourceLoc cTokenLoc);
SWIFT_NAME("BridgedIntegerLiteralExpr.createParsed(_:value:loc:)")
BridgedIntegerLiteralExpr
IntegerLiteralExpr_createParsed(BridgedASTContext cContext,
BridgedStringRef cStr,
BridgedSourceLoc cTokenLoc);
SWIFT_NAME("BridgedBooleanLiteralExpr.createParsed(_:value:loc:)")
BridgedBooleanLiteralExpr
BooleanLiteralExpr_createParsed(BridgedASTContext cContext, bool value,
BridgedSourceLoc cTokenLoc);
SWIFT_NAME("BridgedNilLiteralExpr.createParsed(_:nilKeywordLoc:)")
BridgedNilLiteralExpr
NilLiteralExpr_createParsed(BridgedASTContext cContext,
BridgedSourceLoc cNilKeywordLoc);
SWIFT_NAME("BridgedArrayExpr.createParsed(_:lSquareLoc:elements:commaLocs:"
"rSquareLoc:)")
BridgedArrayExpr ArrayExpr_createParsed(BridgedASTContext cContext,
BridgedSourceLoc cLLoc,
BridgedArrayRef elements,
BridgedArrayRef commas,
BridgedSourceLoc cRLoc);
SWIFT_NAME(
"BridgedPatternBindingDecl.createParsed(_:declContext:bindingKeywordLoc:"
"nameExpr:initializer:isStatic:isLet:)")
BridgedPatternBindingDecl PatternBindingDecl_createParsed(
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
BridgedSourceLoc cBindingKeywordLoc, BridgedExpr opaqueNameExpr,
BridgedExpr opaqueInitExpr, bool isStatic, bool isLet);
SWIFT_NAME("BridgedSingleValueStmtExpr.createWithWrappedBranches(_:stmt:"
"declContext:mustBeExpr:)")
BridgedSingleValueStmtExpr SingleValueStmtExpr_createWithWrappedBranches(
BridgedASTContext cContext, BridgedStmt S, BridgedDeclContext cDeclContext,
bool mustBeExpr);
SWIFT_NAME("BridgedIfStmt.createParsed(_:ifKeywordLoc:condition:thenStmt:"
"elseLoc:elseStmt:)")
BridgedIfStmt IfStmt_createParsed(BridgedASTContext cContext,
BridgedSourceLoc cIfLoc, BridgedExpr cond,
BridgedStmt then, BridgedSourceLoc cElseLoc,
BridgedNullableStmt elseStmt);
SWIFT_NAME("BridgedBraceStmt.createParsed(_:lBraceLoc:elements:rBraceLoc:)")
BridgedBraceStmt BraceStmt_createParsed(BridgedASTContext cContext,
BridgedSourceLoc cLBLoc,
BridgedArrayRef elements,
BridgedSourceLoc cRBLoc);
SWIFT_NAME("BridgedParamDecl.createParsed(_:declContext:specifierLoc:firstName:"
"firstNameLoc:secondName:secondNameLoc:type:defaultValue:)")
BridgedParamDecl ParamDecl_createParsed(
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
BridgedSourceLoc cSpecifierLoc, BridgedIdentifier cFirstName,
BridgedSourceLoc cFirstNameLoc, BridgedIdentifier cSecondName,
BridgedSourceLoc cSecondNameLoc, BridgedNullableTypeRepr type,
BridgedNullableExpr defaultValue);
SWIFT_NAME("BridgedConstructorDecl.setParsedBody(self:_:)")
void ConstructorDecl_setParsedBody(BridgedConstructorDecl decl,
BridgedBraceStmt body);
SWIFT_NAME("BridgedFuncDecl.setParsedBody(self:_:)")
void FuncDecl_setParsedBody(BridgedFuncDecl decl, BridgedBraceStmt body);
SWIFT_NAME("BridgedDestructorDecl.setParsedBody(self:_:)")
void DestructorDecl_setParsedBody(BridgedDestructorDecl decl,
BridgedBraceStmt body);
SWIFT_NAME(
"BridgedFuncDecl.createParsed(_:declContext:staticLoc:funcKeywordLoc:"
"name:nameLoc:genericParamList:parameterList:asyncSpecifierLoc:"
"throwsSpecifierLoc:thrownType:returnType:genericWhereClause:)")
BridgedFuncDecl FuncDecl_createParsed(
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
BridgedSourceLoc cStaticLoc, BridgedSourceLoc cFuncKeywordLoc,
BridgedIdentifier cName, BridgedSourceLoc cNameLoc,
BridgedNullableGenericParamList genericParamList,
BridgedParameterList parameterList, BridgedSourceLoc cAsyncLoc,
BridgedSourceLoc cThrowsLoc, BridgedNullableTypeRepr thrownType,
BridgedNullableTypeRepr returnType,
BridgedNullableTrailingWhereClause opaqueGenericWhereClause);
SWIFT_NAME(
"BridgedConstructorDecl.createParsed(_:declContext:initKeywordLoc:"
"failabilityMarkLoc:isIUO:genericParamList:parameterList:"
"asyncSpecifierLoc:throwsSpecifierLoc:thrownType:genericWhereClause:)")
BridgedConstructorDecl ConstructorDecl_createParsed(
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
BridgedSourceLoc cInitKeywordLoc, BridgedSourceLoc cFailabilityMarkLoc,
bool isIUO, BridgedNullableGenericParamList genericParams,
BridgedParameterList parameterList, BridgedSourceLoc cAsyncLoc,
BridgedSourceLoc cThrowsLoc, BridgedNullableTypeRepr thrownType,
BridgedNullableTrailingWhereClause genericWhereClause);
SWIFT_NAME(
"BridgedDestructorDecl.createParsed(_:declContext:deinitKeywordLoc:)")
BridgedDestructorDecl
DestructorDecl_createParsed(BridgedASTContext cContext,
BridgedDeclContext cDeclContext,
BridgedSourceLoc cDeinitKeywordLoc);
SWIFT_NAME("BridgedSimpleIdentTypeRepr.createParsed(_:loc:name:)")
BridgedTypeRepr SimpleIdentTypeRepr_createParsed(BridgedASTContext cContext,
BridgedSourceLoc cLoc,
BridgedIdentifier id);
SWIFT_NAME("BridgedUnresolvedDotExpr.createParsed(_:base:dotLoc:name:nameLoc:)")
BridgedUnresolvedDotExpr
UnresolvedDotExpr_createParsed(BridgedASTContext cContext, BridgedExpr base,
BridgedSourceLoc cDotLoc, BridgedIdentifier name,
BridgedSourceLoc cNameLoc);
SWIFT_NAME("BridgedClosureExpr.createParsed(_:declContext:body:)")
BridgedClosureExpr ClosureExpr_createParsed(BridgedASTContext cContext,
BridgedDeclContext cDeclContext,
BridgedBraceStmt body);
SWIFT_NAME(
"BridgedTypeAliasDecl.createParsed(_:declContext:typealiasKeywordLoc:name:"
"nameLoc:genericParamList:equalLoc:underlyingType:genericWhereClause:)")
BridgedTypeAliasDecl TypeAliasDecl_createParsed(
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
BridgedSourceLoc cAliasKeywordLoc, BridgedIdentifier cName,
BridgedSourceLoc cNameLoc, BridgedNullableGenericParamList genericParamList,
BridgedSourceLoc cEqualLoc, BridgedTypeRepr underlyingType,
BridgedNullableTrailingWhereClause genericWhereClause);
SWIFT_NAME("BridgedExtensionDecl.setParsedMembers(self:_:)")
void ExtensionDecl_setParsedMembers(BridgedExtensionDecl decl,
BridgedArrayRef members);
SWIFT_NAME(
"BridgedEnumDecl.createParsed(_:declContext:enumKeywordLoc:name:nameLoc:"
"genericParamList:inheritedTypes:genericWhereClause:braceRange:)")
BridgedNominalTypeDecl EnumDecl_createParsed(
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
BridgedSourceLoc cEnumKeywordLoc, BridgedIdentifier cName,
BridgedSourceLoc cNameLoc, BridgedNullableGenericParamList genericParamList,
BridgedArrayRef cInheritedTypes,
BridgedNullableTrailingWhereClause genericWhereClause,
BridgedSourceRange cBraceRange);
SWIFT_NAME(
"BridgedEnumCaseDecl.createParsed(declContext:caseKeywordLoc:elements:)")
BridgedEnumCaseDecl EnumCaseDecl_createParsed(BridgedDeclContext cDeclContext,
BridgedSourceLoc cCaseKeywordLoc,
BridgedArrayRef cElements);
SWIFT_NAME("BridgedEnumElementDecl.createParsed(_:declContext:name:nameLoc:"
"parameterList:equalsLoc:rawValue:)")
BridgedEnumElementDecl EnumElementDecl_createParsed(
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
BridgedIdentifier cName, BridgedSourceLoc cNameLoc,
BridgedNullableParameterList parameterList, BridgedSourceLoc cEqualsLoc,
BridgedNullableExpr opaqueRawValue);
SWIFT_NAME("BridgedStructDecl.createParsed(_:declContext:structKeywordLoc:name:"
"nameLoc:genericParamList:inheritedTypes:genericWhereClause:"
"braceRange:)")
BridgedNominalTypeDecl StructDecl_createParsed(
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
BridgedSourceLoc cStructKeywordLoc, BridgedIdentifier cName,
BridgedSourceLoc cNameLoc, BridgedNullableGenericParamList genericParamList,
BridgedArrayRef cInheritedTypes,
BridgedNullableTrailingWhereClause genericWhereClause,
BridgedSourceRange cBraceRange);
SWIFT_NAME(
"BridgedClassDecl.createParsed(_:declContext:classKeywordLoc:name:nameLoc:"
"genericParamList:inheritedTypes:genericWhereClause:braceRange:isActor:)")
BridgedNominalTypeDecl ClassDecl_createParsed(
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
BridgedSourceLoc cClassKeywordLoc, BridgedIdentifier cName,
BridgedSourceLoc cNameLoc, BridgedNullableGenericParamList genericParamList,
BridgedArrayRef cInheritedTypes,
BridgedNullableTrailingWhereClause genericWhereClause,
BridgedSourceRange cBraceRange, bool isActor);
SWIFT_NAME(
"BridgedProtocolDecl.createParsed(_:declContext:protocolKeywordLoc:name:"
"nameLoc:primaryAssociatedTypeNames:inheritedTypes:"
"genericWhereClause:braceRange:)")
BridgedNominalTypeDecl ProtocolDecl_createParsed(
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
BridgedSourceLoc cProtocolKeywordLoc, BridgedIdentifier cName,
BridgedSourceLoc cNameLoc, BridgedArrayRef cPrimaryAssociatedTypeNames,
BridgedArrayRef cInheritedTypes,
BridgedNullableTrailingWhereClause genericWhereClause,
BridgedSourceRange cBraceRange);
SWIFT_NAME("BridgedAssociatedTypeDecl.createParsed(_:declContext:"
"associatedtypeKeywordLoc:name:nameLoc:inheritedTypes:defaultType:"
"genericWhereClause:)")
BridgedAssociatedTypeDecl AssociatedTypeDecl_createParsed(
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
BridgedSourceLoc cAssociatedtypeKeywordLoc, BridgedIdentifier cName,
BridgedSourceLoc cNameLoc, BridgedArrayRef cInheritedTypes,
BridgedNullableTypeRepr opaqueDefaultType,
BridgedNullableTrailingWhereClause genericWhereClause);
SWIFT_NAME(
"BridgedExtensionDecl.createParsed(_:declContext:extensionKeywordLoc:"
"extendedType:inheritedTypes:genericWhereClause:braceRange:)")
BridgedExtensionDecl ExtensionDecl_createParsed(
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
BridgedSourceLoc cExtensionKeywordLoc, BridgedTypeRepr opaqueExtendedType,
BridgedArrayRef cInheritedTypes,
BridgedNullableTrailingWhereClause genericWhereClause,
BridgedSourceRange cBraceRange);
typedef enum ENUM_EXTENSIBILITY_ATTR(closed) {
BridgedOperatorFixityInfix,
BridgedOperatorFixityPrefix,
BridgedOperatorFixityPostfix,
} BridgedOperatorFixity;
SWIFT_NAME("BridgedOperatorDecl.createParsed(_:declContext:fixity:"
"operatorKeywordLoc:name:nameLoc:colonLoc:precedenceGroupName:"
"precedenceGroupLoc:)")
BridgedOperatorDecl OperatorDecl_createParsed(
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
BridgedOperatorFixity cFixity, BridgedSourceLoc cOperatorKeywordLoc,
BridgedIdentifier cName, BridgedSourceLoc cNameLoc,
BridgedSourceLoc cColonLoc, BridgedIdentifier cPrecedenceGroupName,
BridgedSourceLoc cPrecedenceGroupLoc);
typedef enum ENUM_EXTENSIBILITY_ATTR(closed) {
BridgedAssociativityNone,
BridgedAssociativityLeft,
BridgedAssociativityRight,
} BridgedAssociativity;
SWIFT_NAME("BridgedPrecedenceGroupDecl.createParsed(declContext:"
"precedencegroupKeywordLoc:name:nameLoc:leftBraceLoc:"
"associativityLabelLoc:associativityValueLoc:associativity:"
"assignmentLabelLoc:assignmentValueLoc:isAssignment:"
"higherThanKeywordLoc:higherThanNames:lowerThanKeywordLoc:"
"lowerThanNames:rightBraceLoc:)")
BridgedPrecedenceGroupDecl PrecedenceGroupDecl_createParsed(
BridgedDeclContext cDeclContext,
BridgedSourceLoc cPrecedencegroupKeywordLoc, BridgedIdentifier cName,
BridgedSourceLoc cNameLoc, BridgedSourceLoc cLeftBraceLoc,
BridgedSourceLoc cAssociativityKeywordLoc,
BridgedSourceLoc cAssociativityValueLoc,
BridgedAssociativity cAssociativity, BridgedSourceLoc cAssignmentKeywordLoc,
BridgedSourceLoc cAssignmentValueLoc, bool isAssignment,
BridgedSourceLoc cHigherThanKeywordLoc, BridgedArrayRef cHigherThanNames,
BridgedSourceLoc cLowerThanKeywordLoc, BridgedArrayRef cLowerThanNames,
BridgedSourceLoc cRightBraceLoc);
typedef enum ENUM_EXTENSIBILITY_ATTR(open) {
BridgedImportKindModule,
BridgedImportKindType,
BridgedImportKindStruct,
BridgedImportKindClass,
BridgedImportKindEnum,
BridgedImportKindProtocol,
BridgedImportKindVar,
BridgedImportKindFunc,
} BridgedImportKind;
SWIFT_NAME("BridgedImportDecl.createParsed(_:declContext:importKeywordLoc:"
"importKind:importKindLoc:path:)")
BridgedImportDecl ImportDecl_createParsed(BridgedASTContext cContext,
BridgedDeclContext cDeclContext,
BridgedSourceLoc cImportKeywordLoc,
BridgedImportKind cImportKind,
BridgedSourceLoc cImportKindLoc,
BridgedArrayRef cImportPathElements);
SWIFT_NAME("BridgedGenericParamList.createParsed(_:leftAngleLoc:parameters:"
"genericWhereClause:rightAngleLoc:)")
BridgedGenericParamList GenericParamList_createParsed(
BridgedASTContext cContext, BridgedSourceLoc cLeftAngleLoc,
BridgedArrayRef cParameters,
BridgedNullableTrailingWhereClause genericWhereClause,
BridgedSourceLoc cRightAngleLoc);
SWIFT_NAME(
"BridgedGenericTypeParamDecl.createParsed(_:declContext:eachKeywordLoc:"
"name:nameLoc:inheritedType:index:)")
BridgedGenericTypeParamDecl GenericTypeParamDecl_createParsed(
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
BridgedSourceLoc cEachLoc, BridgedIdentifier cName,
BridgedSourceLoc cNameLoc, BridgedNullableTypeRepr opaqueInheritedType,
size_t index);
SWIFT_NAME(
"BridgedTrailingWhereClause.createParsed(_:whereKeywordLoc:requirements:)")
BridgedTrailingWhereClause
TrailingWhereClause_createParsed(BridgedASTContext cContext,
BridgedSourceLoc cWhereKeywordLoc,
BridgedArrayRef cRequirements);
SWIFT_NAME("BridgedParameterList.createParsed(_:leftParenLoc:parameters:"
"rightParenLoc:)")
BridgedParameterList ParameterList_createParsed(
BridgedASTContext cContext, BridgedSourceLoc cLeftParenLoc,
BridgedArrayRef cParameters, BridgedSourceLoc cRightParenLoc);
BridgedTypeAttrKind TypeAttrKind_fromString(BridgedStringRef cStr);
BridgedTypeAttributes TypeAttributes_create(void);
void TypeAttributes_addSimpleAttr(BridgedTypeAttributes cAttributes,
BridgedTypeAttrKind kind,
BridgedSourceLoc cAtLoc,
BridgedSourceLoc cAttrLoc);
SWIFT_NAME(
"BridgedArrayTypeRepr.createParsed(_:base:leftSquareLoc:rightSquareLoc:)")
BridgedTypeRepr ArrayTypeRepr_createParsed(BridgedASTContext cContext,
BridgedTypeRepr base,
BridgedSourceLoc cLSquareLoc,
BridgedSourceLoc cRSquareLoc);
SWIFT_NAME("BridgedAttributedTypeRepr.createParsed(_:base:attributes:)")
BridgedTypeRepr
AttributedTypeRepr_createParsed(BridgedASTContext cContext,
BridgedTypeRepr base,
BridgedTypeAttributes cAttributes);
SWIFT_NAME(
"BridgedSpecifierTypeRepr.createParsed(_:base:specifier:specifierLoc:)")
BridgedTypeRepr
SpecifierTypeRepr_createParsed(BridgedASTContext cContext, BridgedTypeRepr base,
BridgedAttributedTypeSpecifier specifier,
BridgedSourceLoc cSpecifierLoc);
SWIFT_NAME("BridgedCompositionTypeRepr.createEmpty(_:anyKeywordLoc:)")
BridgedTypeRepr CompositionTypeRepr_createEmpty(BridgedASTContext cContext,
BridgedSourceLoc cAnyLoc);
SWIFT_NAME("BridgedCompositionTypeRepr.createParsed(_:types:ampersandLoc:)")
BridgedTypeRepr CompositionTypeRepr_createParsed(BridgedASTContext cContext,
BridgedArrayRef types,
BridgedSourceLoc cFirstAmpLoc);
SWIFT_NAME("BridgedDictionaryTypeRepr.createParsed(_:leftSquareLoc:keyType:"
"colonLoc:valueType:rightSquareLoc:)")
BridgedTypeRepr DictionaryTypeRepr_createParsed(BridgedASTContext cContext,
BridgedSourceLoc cLSquareLoc,
BridgedTypeRepr keyType,
BridgedSourceLoc cColonloc,
BridgedTypeRepr valueType,
BridgedSourceLoc cRSquareLoc);
SWIFT_NAME("BridgedFunctionTypeRepr.createParsed(_:argsType:asyncLoc:throwsLoc:"
"thrownType:arrowLoc:resultType:)")
BridgedTypeRepr FunctionTypeRepr_createParsed(
BridgedASTContext cContext, BridgedTypeRepr argsTy,
BridgedSourceLoc cAsyncLoc, BridgedSourceLoc cThrowsLoc,
BridgedNullableTypeRepr thrownType, BridgedSourceLoc cArrowLoc,
BridgedTypeRepr resultType);
SWIFT_NAME("BridgedGenericIdentTypeRepr.createParsed(_:name:nameLoc:"
"genericArgs:leftAngleLoc:rightAngleLoc:)")
BridgedTypeRepr GenericIdentTypeRepr_createParsed(BridgedASTContext cContext,
BridgedIdentifier name,
BridgedSourceLoc cNameLoc,
BridgedArrayRef genericArgs,
BridgedSourceLoc cLAngleLoc,
BridgedSourceLoc cRAngleLoc);
SWIFT_NAME("BridgedOptionalTypeRepr.createParsed(_:base:questionLoc:)")
BridgedTypeRepr OptionalTypeRepr_createParsed(BridgedASTContext cContext,
BridgedTypeRepr base,
BridgedSourceLoc cQuestionLoc);
SWIFT_NAME("BridgedImplicitlyUnwrappedOptionalTypeRepr.createParsed(_:base:"
"exclaimLoc:)")
BridgedTypeRepr ImplicitlyUnwrappedOptionalTypeRepr_createParsed(
BridgedASTContext cContext, BridgedTypeRepr base,
BridgedSourceLoc cExclamationLoc);
SWIFT_NAME("BridgedMemberTypeRepr.createParsed(_:base:members:)")
BridgedTypeRepr
MemberTypeRepr_createParsed(BridgedASTContext cContext,
BridgedTypeRepr baseComponent,
BridgedArrayRef bridgedMemberComponents);
SWIFT_NAME("BridgedMetatypeTypeRepr.createParsed(_:base:typeKeywordLoc:)")
BridgedTypeRepr MetatypeTypeRepr_createParsed(BridgedASTContext cContext,
BridgedTypeRepr baseType,
BridgedSourceLoc cTypeLoc);
SWIFT_NAME("BridgedProtocolTypeRepr.createParsed(_:base:protocolKeywordLoc:)")
BridgedTypeRepr ProtocolTypeRepr_createParsed(BridgedASTContext cContext,
BridgedTypeRepr baseType,
BridgedSourceLoc cProtoLoc);
SWIFT_NAME(
"BridgedPackExpansionTypeRepr.createParsed(_:base:repeatKeywordLoc:)")
BridgedTypeRepr PackExpansionTypeRepr_createParsed(BridgedASTContext cContext,
BridgedTypeRepr base,
BridgedSourceLoc cRepeatLoc);
SWIFT_NAME(
"BridgedTupleTypeRepr.createParsed(_:elements:leftParenLoc:rightParenLoc:)")
BridgedTypeRepr TupleTypeRepr_createParsed(BridgedASTContext cContext,
BridgedArrayRef elements,
BridgedSourceLoc cLParenLoc,
BridgedSourceLoc cRParenLoc);
SWIFT_NAME("BridgedNamedOpaqueReturnTypeRepr.createParsed(_:base:)")
BridgedTypeRepr
NamedOpaqueReturnTypeRepr_createParsed(BridgedASTContext cContext,
BridgedTypeRepr baseTy);
SWIFT_NAME("BridgedOpaqueReturnTypeRepr.createParsed(_:someKeywordLoc:base:)")
BridgedTypeRepr OpaqueReturnTypeRepr_createParsed(BridgedASTContext cContext,
BridgedSourceLoc cOpaqueLoc,
BridgedTypeRepr baseTy);
SWIFT_NAME("BridgedExistentialTypeRepr.createParsed(_:anyKeywordLoc:base:)")
BridgedTypeRepr ExistentialTypeRepr_createParsed(BridgedASTContext cContext,
BridgedSourceLoc cAnyLoc,
BridgedTypeRepr baseTy);
SWIFT_NAME("BridgedVarargTypeRepr.createParsed(_:base:ellipsisLoc:)")
BridgedTypeRepr VarargTypeRepr_createParsed(BridgedASTContext cContext,
BridgedTypeRepr base,
BridgedSourceLoc cEllipsisLoc);
SWIFT_NAME("BridgedTopLevelCodeDecl.dump(self:)")
void TopLevelCodeDecl_dump(BridgedTopLevelCodeDecl decl);
SWIFT_NAME("BridgedExpr.dump(self:)")
void Expr_dump(BridgedExpr expr);
SWIFT_NAME("BridgedDecl.dump(self:)")
void Decl_dump(BridgedDecl decl);
SWIFT_NAME("BridgedStmt.dump(self:)")
void Stmt_dump(BridgedStmt statement);
SWIFT_NAME("BridgedTypeRepr.dump(self:)")
void TypeRepr_dump(BridgedTypeRepr type);
//===----------------------------------------------------------------------===//
// Plugins
//===----------------------------------------------------------------------===//
SWIFT_BEGIN_ASSUME_NONNULL
typedef void *PluginHandle;
typedef const void *PluginCapabilityPtr;
/// Set a capability data to the plugin object. Since the data is just a opaque
/// pointer, it's not used in AST at all.
void Plugin_setCapability(PluginHandle handle,
PluginCapabilityPtr _Nullable data);
/// Get a capability data set by \c Plugin_setCapability .
PluginCapabilityPtr _Nullable Plugin_getCapability(PluginHandle handle);
/// Get the executable file path of the plugin.
const char *Plugin_getExecutableFilePath(PluginHandle handle);
/// Lock the plugin. Clients should lock it during sending and recving the
/// response.
void Plugin_lock(PluginHandle handle);
/// Unlock the plugin.
void Plugin_unlock(PluginHandle handle);
/// Launch the plugin if it's not running.
bool Plugin_spawnIfNeeded(PluginHandle handle);
/// Sends the message to the plugin, returns true if there was an error.
/// Clients should receive the response by \c Plugin_waitForNextMessage .
bool Plugin_sendMessage(PluginHandle handle, const BridgedData data);
/// Receive a message from the plugin.
bool Plugin_waitForNextMessage(PluginHandle handle, BridgedData *data);
SWIFT_END_ASSUME_NONNULL
SWIFT_END_NULLABILITY_ANNOTATIONS
#ifndef PURE_BRIDGING_MODE

View File

@@ -1,847 +0,0 @@
//===--- CASTBridging.h - C header for the AST bridging layer ----*- C -*-===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2022 - 2023 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_C_AST_ASTBRIDGING_H
#define SWIFT_C_AST_ASTBRIDGING_H
#include "swift/AST/ASTBridging.h"
#include "swift/Basic/CBasicBridging.h"
#include "swift/Basic/Compiler.h"
#include "swift/Basic/Nullability.h"
#include <stddef.h>
// NOTE: DO NOT #include any stdlib headers here. e.g. <stdint.h>. Those are
// part of "Darwin"/"Glibc" module, so when a Swift file imports this header,
// it causes importing the "Darwin"/"Glibc" overlay module. That violates
// layering. i.e. Darwin overlay is created by Swift compiler.
#if __has_attribute(swift_name)
#define SWIFT_NAME(NAME) __attribute__((swift_name(NAME)))
#else
#define SWIFT_NAME(NAME)
#endif
SWIFT_BEGIN_NULLABILITY_ANNOTATIONS
// Define the bridging wrappers for each AST node.
#define AST_BRIDGING_WRAPPER_NONNULL(Name) \
typedef struct { \
void *_Nonnull raw; \
} Bridged##Name;
// For nullable nodes, define both a nullable and non-null variant.
#define AST_BRIDGING_WRAPPER_NULLABLE(Name) \
typedef struct { \
void *_Nullable raw; \
} BridgedNullable##Name; \
\
typedef struct { \
void *_Nonnull raw; \
} Bridged##Name;
#include "swift/AST/ASTBridgingWrappers.def"
#ifdef __cplusplus
extern "C" {
#endif
// Declare `.asDecl` on each BridgedXXXDecl type, which upcasts a wrapper for
// a Decl subclass to a BridgedDecl.
#define DECL(Id, Parent) \
SWIFT_NAME("getter:Bridged" #Id "Decl.asDecl(self:)") \
BridgedDecl Id##Decl_asDecl(Bridged##Id##Decl decl);
#define ABSTRACT_DECL(Id, Parent) DECL(Id, Parent)
#include "swift/AST/DeclNodes.def"
// Declare `.asDeclContext` on each BridgedXXXDecl type that's also a
// DeclContext.
#define DECL(Id, Parent)
#define CONTEXT_DECL(Id, Parent) \
SWIFT_NAME("getter:Bridged" #Id "Decl.asDeclContext(self:)") \
BridgedDeclContext Id##Decl_asDeclContext(Bridged##Id##Decl decl);
#define ABSTRACT_CONTEXT_DECL(Id, Parent) CONTEXT_DECL(Id, Parent)
#include "swift/AST/DeclNodes.def"
// Declare `.asStmt` on each BridgedXXXStmt type, which upcasts a wrapper for
// a Stmt subclass to a BridgedStmt.
#define STMT(Id, Parent) \
SWIFT_NAME("getter:Bridged" #Id "Stmt.asStmt(self:)") \
BridgedStmt Id##Stmt_asStmt(Bridged##Id##Stmt stmt);
#define ABSTRACT_STMT(Id, Parent) STMT(Id, Parent)
#include "swift/AST/StmtNodes.def"
// Declare `.asExpr` on each BridgedXXXExpr type, which upcasts a wrapper for
// a Expr subclass to a BridgedExpr.
#define EXPR(Id, Parent) \
SWIFT_NAME("getter:Bridged" #Id "Expr.asExpr(self:)") \
BridgedExpr Id##Expr_asExpr(Bridged##Id##Expr expr);
#define ABSTRACT_EXPR(Id, Parent) EXPR(Id, Parent)
#include "swift/AST/ExprNodes.def"
// Declare `.asTypeRepr` on each BridgedXXXTypeRepr type, which upcasts a
// wrapper for a TypeRepr subclass to a BridgedTypeRepr.
#define TYPEREPR(Id, Parent) \
SWIFT_NAME("getter:Bridged" #Id "TypeRepr.asTypeRepr(self:)") \
BridgedTypeRepr Id##TypeRepr_asTypeRepr(Bridged##Id##TypeRepr typeRepr);
#define ABSTRACT_TYPEREPR(Id, Parent) TYPEREPR(Id, Parent)
#include "swift/AST/TypeReprNodes.def"
#ifdef __cplusplus
}
#endif
SWIFT_BEGIN_ASSUME_NONNULL
typedef struct BridgedASTContext {
void *raw;
} BridgedASTContext;
typedef struct {
BridgedSourceLoc startLoc;
BridgedSourceLoc endLoc;
} BridgedSourceRange;
typedef struct BridgedIdentifier {
const void *_Nullable raw;
} BridgedIdentifier;
typedef struct {
void *start;
size_t byteLength;
} BridgedCharSourceRange;
typedef struct {
BridgedIdentifier Name;
BridgedSourceLoc NameLoc;
BridgedIdentifier SecondName;
BridgedSourceLoc SecondNameLoc;
BridgedSourceLoc UnderscoreLoc;
BridgedSourceLoc ColonLoc;
BridgedTypeRepr Type;
BridgedSourceLoc TrailingCommaLoc;
} BridgedTupleTypeElement;
typedef enum ENUM_EXTENSIBILITY_ATTR(open) BridgedRequirementReprKind : size_t {
/// A type bound T : P, where T is a type that depends on a generic
/// parameter and P is some type that should bound T, either as a concrete
/// supertype or a protocol to which T must conform.
BridgedRequirementReprKindTypeConstraint,
/// A same-type requirement T == U, where T and U are types that shall be
/// equivalent.
BridgedRequirementReprKindSameType,
/// A layout bound T : L, where T is a type that depends on a generic
/// parameter and L is some layout specification that should bound T.
BridgedRequirementReprKindLayoutConstraint,
// Note: there is code that packs this enum in a 2-bit bitfield. Audit users
// when adding enumerators.
} BridgedRequirementReprKind;
typedef struct {
BridgedSourceLoc SeparatorLoc;
BridgedRequirementReprKind Kind;
BridgedTypeRepr FirstType;
BridgedTypeRepr SecondType;
// FIXME: Handle Layout Requirements
} BridgedRequirementRepr;
/// Diagnostic severity when reporting diagnostics.
typedef enum ENUM_EXTENSIBILITY_ATTR(open) BridgedDiagnosticSeverity : size_t {
BridgedFatalError,
BridgedError,
BridgedWarning,
BridgedRemark,
BridgedNote,
} BridgedDiagnosticSeverity;
typedef struct BridgedDiagnostic {
void *raw;
} BridgedDiagnostic;
typedef enum ENUM_EXTENSIBILITY_ATTR(open) BridgedMacroDefinitionKind : size_t {
/// An expanded macro.
BridgedExpandedMacro = 0,
/// An external macro, spelled with either the old spelling (Module.Type)
/// or the new spelling `#externalMacro(module: "Module", type: "Type")`.
BridgedExternalMacro,
/// The builtin definition for "externalMacro".
BridgedBuiltinExternalMacro
} BridgedMacroDefinitionKind;
/// Bridged parameter specifiers
typedef enum ENUM_EXTENSIBILITY_ATTR(open) BridgedAttributedTypeSpecifier : size_t {
BridgedAttributedTypeSpecifierInOut,
BridgedAttributedTypeSpecifierBorrowing,
BridgedAttributedTypeSpecifierConsuming,
BridgedAttributedTypeSpecifierLegacyShared,
BridgedAttributedTypeSpecifierLegacyOwned,
BridgedAttributedTypeSpecifierConst,
BridgedAttributedTypeSpecifierIsolated,
} BridgedAttributedTypeSpecifier;
// Bridged type attribute kinds, which mirror TypeAttrKind exactly.
typedef enum ENUM_EXTENSIBILITY_ATTR(closed) BridgedTypeAttrKind : size_t {
BridgedTypeAttrKind_autoclosure,
BridgedTypeAttrKind_convention,
BridgedTypeAttrKind_noescape,
BridgedTypeAttrKind_escaping,
BridgedTypeAttrKind_differentiable,
BridgedTypeAttrKind_noDerivative,
BridgedTypeAttrKind_async,
BridgedTypeAttrKind_Sendable,
BridgedTypeAttrKind_retroactive,
BridgedTypeAttrKind_unchecked,
BridgedTypeAttrKind__local,
BridgedTypeAttrKind__noMetadata,
BridgedTypeAttrKind__opaqueReturnTypeOf,
BridgedTypeAttrKind_block_storage,
BridgedTypeAttrKind_box,
BridgedTypeAttrKind_dynamic_self,
BridgedTypeAttrKind_sil_weak,
BridgedTypeAttrKind_sil_unowned,
BridgedTypeAttrKind_sil_unmanaged,
BridgedTypeAttrKind_error,
BridgedTypeAttrKind_error_indirect,
BridgedTypeAttrKind_error_unowned,
BridgedTypeAttrKind_out,
BridgedTypeAttrKind_direct,
BridgedTypeAttrKind_in,
BridgedTypeAttrKind_inout,
BridgedTypeAttrKind_inout_aliasable,
BridgedTypeAttrKind_in_guaranteed,
BridgedTypeAttrKind_in_constant,
BridgedTypeAttrKind_pack_owned,
BridgedTypeAttrKind_pack_guaranteed,
BridgedTypeAttrKind_pack_inout,
BridgedTypeAttrKind_pack_out,
BridgedTypeAttrKind_owned,
BridgedTypeAttrKind_unowned_inner_pointer,
BridgedTypeAttrKind_guaranteed,
BridgedTypeAttrKind_autoreleased,
BridgedTypeAttrKind_callee_owned,
BridgedTypeAttrKind_callee_guaranteed,
BridgedTypeAttrKind_objc_metatype,
BridgedTypeAttrKind_opened,
BridgedTypeAttrKind_pack_element,
BridgedTypeAttrKind_pseudogeneric,
BridgedTypeAttrKind_unimplementable,
BridgedTypeAttrKind_yields,
BridgedTypeAttrKind_yield_once,
BridgedTypeAttrKind_yield_many,
BridgedTypeAttrKind_captures_generics,
BridgedTypeAttrKind_moveOnly,
BridgedTypeAttrKind_thin,
BridgedTypeAttrKind_thick,
BridgedTypeAttrKind_Count
} BridgedTypeAttrKind;
typedef enum ENUM_EXTENSIBILITY_ATTR(open) ASTNodeKind : size_t {
ASTNodeKindExpr,
ASTNodeKindStmt,
ASTNodeKindDecl
} ASTNodeKind;
typedef struct BridgedASTNode {
void *ptr;
ASTNodeKind kind;
} BridgedASTNode;
typedef struct BridgedTypeAttributes {
void *raw;
} BridgedTypeAttributes;
struct BridgedIdentifierAndSourceLoc {
BridgedIdentifier name;
BridgedSourceLoc nameLoc;
};
#ifdef __cplusplus
extern "C" {
#define _Bool bool
#endif
// Diagnostics
/// Create a new diagnostic with the given severity, location, and diagnostic
/// text.
///
/// \returns a diagnostic instance that can be extended with additional
/// information and then must be finished via \c SwiftDiagnostic_finish.
SWIFT_NAME("BridgedDiagnostic.init(at:message:severity:engine:)")
BridgedDiagnostic Diagnostic_create(BridgedSourceLoc cLoc,
BridgedStringRef cText,
BridgedDiagnosticSeverity severity,
BridgedDiagnosticEngine cDiags);
/// Highlight a source range as part of the diagnostic.
SWIFT_NAME("BridgedDiagnostic.highlight(self:start:end:)")
void Diagnostic_highlight(BridgedDiagnostic cDiag, BridgedSourceLoc cStartLoc,
BridgedSourceLoc cEndLoc);
/// Add a Fix-It to replace a source range as part of the diagnostic.
SWIFT_NAME("BridgedDiagnostic.fixItReplace(self:start:end:replacement:)")
void Diagnostic_fixItReplace(BridgedDiagnostic cDiag,
BridgedSourceLoc cStartLoc,
BridgedSourceLoc cEndLoc,
BridgedStringRef cReplaceText);
/// Finish the given diagnostic and emit it.
SWIFT_NAME("BridgedDiagnostic.finish(self:)")
void Diagnostic_finish(BridgedDiagnostic cDiag);
SWIFT_NAME("BridgedASTContext.getIdentifier(self:_:)")
BridgedIdentifier ASTContext_getIdentifier(BridgedASTContext cContext,
BridgedStringRef cStr);
SWIFT_NAME("BridgedASTContext.langOptsHasFeature(self:_:)")
_Bool ASTContext_langOptsHasFeature(BridgedASTContext cContext,
BridgedFeature feature);
SWIFT_NAME(
"BridgedTopLevelCodeDecl.createParsed(_:declContext:startLoc:stmt:endLoc:)")
BridgedTopLevelCodeDecl
TopLevelCodeDecl_createStmt(BridgedASTContext cContext,
BridgedDeclContext cDeclContext,
BridgedSourceLoc cStartLoc, BridgedStmt statement,
BridgedSourceLoc cEndLoc);
SWIFT_NAME(
"BridgedTopLevelCodeDecl.createParsed(_:declContext:startLoc:expr:endLoc:)")
BridgedTopLevelCodeDecl
TopLevelCodeDecl_createExpr(BridgedASTContext cContext,
BridgedDeclContext cDeclContext,
BridgedSourceLoc cStartLoc, BridgedExpr expression,
BridgedSourceLoc cEndLoc);
SWIFT_NAME("BridgedReturnStmt.createParsed(_:returnKeywordLoc:expr:)")
BridgedReturnStmt ReturnStmt_createParsed(BridgedASTContext cContext,
BridgedSourceLoc cLoc,
BridgedNullableExpr expr);
SWIFT_NAME("BridgedSequenceExpr.createParsed(_:exprs:)")
BridgedSequenceExpr SequenceExpr_createParsed(BridgedASTContext cContext,
BridgedArrayRef exprs);
SWIFT_NAME("BridgedSourceLoc.advanced(self:by:)")
BridgedSourceLoc SourceLoc_advanced(BridgedSourceLoc cLoc, size_t len);
SWIFT_NAME("BridgedTupleExpr.createParsed(_:leftParenLoc:exprs:labels:"
"labelLocs:rightParenLoc:)")
BridgedTupleExpr
TupleExpr_createParsed(BridgedASTContext cContext, BridgedSourceLoc cLParen,
BridgedArrayRef subs, BridgedArrayRef names,
BridgedArrayRef cNameLocs, BridgedSourceLoc cRParen);
SWIFT_NAME("BridgedCallExpr.createParsed(_:fn:args:)")
BridgedCallExpr CallExpr_createParsed(BridgedASTContext cContext,
BridgedExpr fn, BridgedTupleExpr args);
SWIFT_NAME("BridgedUnresolvedDeclRefExpr.createParsed(_:base:loc:)")
BridgedUnresolvedDeclRefExpr UnresolvedDeclRefExpr_createParsed(
BridgedASTContext cContext, BridgedIdentifier base, BridgedSourceLoc cLoc);
SWIFT_NAME("BridgedStringLiteralExpr.createParsed(_:value:loc:)")
BridgedStringLiteralExpr
StringLiteralExpr_createParsed(BridgedASTContext cContext, BridgedStringRef cStr,
BridgedSourceLoc cTokenLoc);
SWIFT_NAME("BridgedIntegerLiteralExpr.createParsed(_:value:loc:)")
BridgedIntegerLiteralExpr
IntegerLiteralExpr_createParsed(BridgedASTContext cContext, BridgedStringRef cStr,
BridgedSourceLoc cTokenLoc);
SWIFT_NAME("BridgedBooleanLiteralExpr.createParsed(_:value:loc:)")
BridgedBooleanLiteralExpr
BooleanLiteralExpr_createParsed(BridgedASTContext cContext, _Bool value,
BridgedSourceLoc cTokenLoc);
SWIFT_NAME("BridgedNilLiteralExpr.createParsed(_:nilKeywordLoc:)")
BridgedNilLiteralExpr
NilLiteralExpr_createParsed(BridgedASTContext cContext,
BridgedSourceLoc cNilKeywordLoc);
SWIFT_NAME("BridgedArrayExpr.createParsed(_:lSquareLoc:elements:commaLocs:"
"rSquareLoc:)")
BridgedArrayExpr ArrayExpr_createParsed(BridgedASTContext cContext,
BridgedSourceLoc cLLoc,
BridgedArrayRef elements,
BridgedArrayRef commas,
BridgedSourceLoc cRLoc);
SWIFT_NAME(
"BridgedPatternBindingDecl.createParsed(_:declContext:bindingKeywordLoc:"
"nameExpr:initializer:isStatic:isLet:)")
BridgedPatternBindingDecl PatternBindingDecl_createParsed(
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
BridgedSourceLoc cBindingKeywordLoc, BridgedExpr opaqueNameExpr,
BridgedExpr opaqueInitExpr, _Bool isStatic, _Bool isLet);
SWIFT_NAME("BridgedSingleValueStmtExpr.createWithWrappedBranches(_:stmt:"
"declContext:mustBeExpr:)")
BridgedSingleValueStmtExpr SingleValueStmtExpr_createWithWrappedBranches(
BridgedASTContext cContext, BridgedStmt S, BridgedDeclContext cDeclContext,
_Bool mustBeExpr);
SWIFT_NAME("BridgedIfStmt.createParsed(_:ifKeywordLoc:condition:thenStmt:"
"elseLoc:elseStmt:)")
BridgedIfStmt IfStmt_createParsed(BridgedASTContext cContext,
BridgedSourceLoc cIfLoc, BridgedExpr cond,
BridgedStmt then, BridgedSourceLoc cElseLoc,
BridgedNullableStmt elseStmt);
SWIFT_NAME("BridgedBraceStmt.createParsed(_:lBraceLoc:elements:rBraceLoc:)")
BridgedBraceStmt BraceStmt_createParsed(BridgedASTContext cContext,
BridgedSourceLoc cLBLoc,
BridgedArrayRef elements,
BridgedSourceLoc cRBLoc);
SWIFT_NAME("BridgedParamDecl.createParsed(_:declContext:specifierLoc:firstName:"
"firstNameLoc:secondName:secondNameLoc:type:defaultValue:)")
BridgedParamDecl ParamDecl_createParsed(
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
BridgedSourceLoc cSpecifierLoc, BridgedIdentifier cFirstName,
BridgedSourceLoc cFirstNameLoc, BridgedIdentifier cSecondName,
BridgedSourceLoc cSecondNameLoc, BridgedNullableTypeRepr type,
BridgedNullableExpr defaultValue);
SWIFT_NAME("BridgedConstructorDecl.setParsedBody(self:_:)")
void ConstructorDecl_setParsedBody(BridgedConstructorDecl decl,
BridgedBraceStmt body);
SWIFT_NAME("BridgedFuncDecl.setParsedBody(self:_:)")
void FuncDecl_setParsedBody(BridgedFuncDecl decl, BridgedBraceStmt body);
SWIFT_NAME("BridgedDestructorDecl.setParsedBody(self:_:)")
void DestructorDecl_setParsedBody(BridgedDestructorDecl decl,
BridgedBraceStmt body);
SWIFT_NAME(
"BridgedFuncDecl.createParsed(_:declContext:staticLoc:funcKeywordLoc:"
"name:nameLoc:genericParamList:parameterList:asyncSpecifierLoc:"
"throwsSpecifierLoc:thrownType:returnType:genericWhereClause:)")
BridgedFuncDecl FuncDecl_createParsed(
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
BridgedSourceLoc cStaticLoc, BridgedSourceLoc cFuncKeywordLoc,
BridgedIdentifier cName, BridgedSourceLoc cNameLoc,
BridgedNullableGenericParamList genericParamList,
BridgedParameterList parameterList, BridgedSourceLoc cAsyncLoc,
BridgedSourceLoc cThrowsLoc, BridgedNullableTypeRepr thrownType,
BridgedNullableTypeRepr returnType,
BridgedNullableTrailingWhereClause opaqueGenericWhereClause);
SWIFT_NAME(
"BridgedConstructorDecl.createParsed(_:declContext:initKeywordLoc:"
"failabilityMarkLoc:isIUO:genericParamList:parameterList:"
"asyncSpecifierLoc:throwsSpecifierLoc:thrownType:genericWhereClause:)")
BridgedConstructorDecl ConstructorDecl_createParsed(
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
BridgedSourceLoc cInitKeywordLoc, BridgedSourceLoc cFailabilityMarkLoc,
_Bool isIUO, BridgedNullableGenericParamList genericParams,
BridgedParameterList parameterList, BridgedSourceLoc cAsyncLoc,
BridgedSourceLoc cThrowsLoc, BridgedNullableTypeRepr thrownType,
BridgedNullableTrailingWhereClause genericWhereClause);
SWIFT_NAME(
"BridgedDestructorDecl.createParsed(_:declContext:deinitKeywordLoc:)")
BridgedDestructorDecl
DestructorDecl_createParsed(BridgedASTContext cContext,
BridgedDeclContext cDeclContext,
BridgedSourceLoc cDeinitKeywordLoc);
SWIFT_NAME("BridgedSimpleIdentTypeRepr.createParsed(_:loc:name:)")
BridgedTypeRepr SimpleIdentTypeRepr_createParsed(BridgedASTContext cContext,
BridgedSourceLoc cLoc,
BridgedIdentifier id);
SWIFT_NAME("BridgedUnresolvedDotExpr.createParsed(_:base:dotLoc:name:nameLoc:)")
BridgedUnresolvedDotExpr
UnresolvedDotExpr_createParsed(BridgedASTContext cContext, BridgedExpr base,
BridgedSourceLoc cDotLoc, BridgedIdentifier name,
BridgedSourceLoc cNameLoc);
SWIFT_NAME("BridgedClosureExpr.createParsed(_:declContext:body:)")
BridgedClosureExpr ClosureExpr_createParsed(BridgedASTContext cContext,
BridgedDeclContext cDeclContext,
BridgedBraceStmt body);
SWIFT_NAME(
"BridgedTypeAliasDecl.createParsed(_:declContext:typealiasKeywordLoc:name:"
"nameLoc:genericParamList:equalLoc:underlyingType:genericWhereClause:)")
BridgedTypeAliasDecl TypeAliasDecl_createParsed(
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
BridgedSourceLoc cAliasKeywordLoc, BridgedIdentifier cName,
BridgedSourceLoc cNameLoc, BridgedNullableGenericParamList genericParamList,
BridgedSourceLoc cEqualLoc, BridgedTypeRepr underlyingType,
BridgedNullableTrailingWhereClause genericWhereClause);
SWIFT_NAME("BridgedNominalTypeDecl.setParsedMembers(self:_:)")
void NominalTypeDecl_setParsedMembers(BridgedNominalTypeDecl decl,
BridgedArrayRef members);
SWIFT_NAME("BridgedExtensionDecl.setParsedMembers(self:_:)")
void ExtensionDecl_setParsedMembers(BridgedExtensionDecl decl,
BridgedArrayRef members);
SWIFT_NAME(
"BridgedEnumDecl.createParsed(_:declContext:enumKeywordLoc:name:nameLoc:"
"genericParamList:inheritedTypes:genericWhereClause:braceRange:)")
BridgedNominalTypeDecl EnumDecl_createParsed(
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
BridgedSourceLoc cEnumKeywordLoc, BridgedIdentifier cName,
BridgedSourceLoc cNameLoc, BridgedNullableGenericParamList genericParamList,
BridgedArrayRef cInheritedTypes,
BridgedNullableTrailingWhereClause genericWhereClause,
BridgedSourceRange cBraceRange);
SWIFT_NAME(
"BridgedEnumCaseDecl.createParsed(declContext:caseKeywordLoc:elements:)")
BridgedEnumCaseDecl EnumCaseDecl_createParsed(BridgedDeclContext cDeclContext,
BridgedSourceLoc cCaseKeywordLoc,
BridgedArrayRef cElements);
SWIFT_NAME("BridgedEnumElementDecl.createParsed(_:declContext:name:nameLoc:"
"parameterList:equalsLoc:rawValue:)")
BridgedEnumElementDecl EnumElementDecl_createParsed(
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
BridgedIdentifier cName, BridgedSourceLoc cNameLoc,
BridgedNullableParameterList parameterList, BridgedSourceLoc cEqualsLoc,
BridgedNullableExpr opaqueRawValue);
SWIFT_NAME("BridgedStructDecl.createParsed(_:declContext:structKeywordLoc:name:"
"nameLoc:genericParamList:inheritedTypes:genericWhereClause:"
"braceRange:)")
BridgedNominalTypeDecl StructDecl_createParsed(
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
BridgedSourceLoc cStructKeywordLoc, BridgedIdentifier cName,
BridgedSourceLoc cNameLoc, BridgedNullableGenericParamList genericParamList,
BridgedArrayRef cInheritedTypes,
BridgedNullableTrailingWhereClause genericWhereClause,
BridgedSourceRange cBraceRange);
SWIFT_NAME(
"BridgedClassDecl.createParsed(_:declContext:classKeywordLoc:name:nameLoc:"
"genericParamList:inheritedTypes:genericWhereClause:braceRange:isActor:)")
BridgedNominalTypeDecl ClassDecl_createParsed(
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
BridgedSourceLoc cClassKeywordLoc, BridgedIdentifier cName,
BridgedSourceLoc cNameLoc, BridgedNullableGenericParamList genericParamList,
BridgedArrayRef cInheritedTypes,
BridgedNullableTrailingWhereClause genericWhereClause,
BridgedSourceRange cBraceRange, _Bool isActor);
SWIFT_NAME(
"BridgedProtocolDecl.createParsed(_:declContext:protocolKeywordLoc:name:"
"nameLoc:primaryAssociatedTypeNames:inheritedTypes:"
"genericWhereClause:braceRange:)")
BridgedNominalTypeDecl ProtocolDecl_createParsed(
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
BridgedSourceLoc cProtocolKeywordLoc, BridgedIdentifier cName,
BridgedSourceLoc cNameLoc, BridgedArrayRef cPrimaryAssociatedTypeNames,
BridgedArrayRef cInheritedTypes,
BridgedNullableTrailingWhereClause genericWhereClause,
BridgedSourceRange cBraceRange);
SWIFT_NAME("BridgedAssociatedTypeDecl.createParsed(_:declContext:"
"associatedtypeKeywordLoc:name:nameLoc:inheritedTypes:defaultType:"
"genericWhereClause:)")
BridgedAssociatedTypeDecl AssociatedTypeDecl_createParsed(
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
BridgedSourceLoc cAssociatedtypeKeywordLoc, BridgedIdentifier cName,
BridgedSourceLoc cNameLoc, BridgedArrayRef cInheritedTypes,
BridgedNullableTypeRepr opaqueDefaultType,
BridgedNullableTrailingWhereClause genericWhereClause);
SWIFT_NAME(
"BridgedExtensionDecl.createParsed(_:declContext:extensionKeywordLoc:"
"extendedType:inheritedTypes:genericWhereClause:braceRange:)")
BridgedExtensionDecl ExtensionDecl_createParsed(
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
BridgedSourceLoc cExtensionKeywordLoc, BridgedTypeRepr opaqueExtendedType,
BridgedArrayRef cInheritedTypes,
BridgedNullableTrailingWhereClause genericWhereClause,
BridgedSourceRange cBraceRange);
typedef enum ENUM_EXTENSIBILITY_ATTR(closed) {
BridgedOperatorFixityInfix,
BridgedOperatorFixityPrefix,
BridgedOperatorFixityPostfix,
} BridgedOperatorFixity;
SWIFT_NAME("BridgedOperatorDecl.createParsed(_:declContext:fixity:"
"operatorKeywordLoc:name:nameLoc:colonLoc:precedenceGroupName:"
"precedenceGroupLoc:)")
BridgedOperatorDecl OperatorDecl_createParsed(
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
BridgedOperatorFixity cFixity, BridgedSourceLoc cOperatorKeywordLoc,
BridgedIdentifier cName, BridgedSourceLoc cNameLoc,
BridgedSourceLoc cColonLoc, BridgedIdentifier cPrecedenceGroupName,
BridgedSourceLoc cPrecedenceGroupLoc);
typedef enum ENUM_EXTENSIBILITY_ATTR(closed) {
BridgedAssociativityNone,
BridgedAssociativityLeft,
BridgedAssociativityRight,
} BridgedAssociativity;
SWIFT_NAME("BridgedPrecedenceGroupDecl.createParsed(declContext:"
"precedencegroupKeywordLoc:name:nameLoc:leftBraceLoc:"
"associativityLabelLoc:associativityValueLoc:associativity:"
"assignmentLabelLoc:assignmentValueLoc:isAssignment:"
"higherThanKeywordLoc:higherThanNames:lowerThanKeywordLoc:"
"lowerThanNames:rightBraceLoc:)")
BridgedPrecedenceGroupDecl PrecedenceGroupDecl_createParsed(
BridgedDeclContext cDeclContext,
BridgedSourceLoc cPrecedencegroupKeywordLoc, BridgedIdentifier cName,
BridgedSourceLoc cNameLoc, BridgedSourceLoc cLeftBraceLoc,
BridgedSourceLoc cAssociativityKeywordLoc,
BridgedSourceLoc cAssociativityValueLoc,
BridgedAssociativity cAssociativity, BridgedSourceLoc cAssignmentKeywordLoc,
BridgedSourceLoc cAssignmentValueLoc, _Bool isAssignment,
BridgedSourceLoc cHigherThanKeywordLoc, BridgedArrayRef cHigherThanNames,
BridgedSourceLoc cLowerThanKeywordLoc, BridgedArrayRef cLowerThanNames,
BridgedSourceLoc cRightBraceLoc);
typedef enum ENUM_EXTENSIBILITY_ATTR(open) {
BridgedImportKindModule,
BridgedImportKindType,
BridgedImportKindStruct,
BridgedImportKindClass,
BridgedImportKindEnum,
BridgedImportKindProtocol,
BridgedImportKindVar,
BridgedImportKindFunc,
} BridgedImportKind;
SWIFT_NAME("BridgedImportDecl.createParsed(_:declContext:importKeywordLoc:"
"importKind:importKindLoc:path:)")
BridgedImportDecl ImportDecl_createParsed(BridgedASTContext cContext,
BridgedDeclContext cDeclContext,
BridgedSourceLoc cImportKeywordLoc,
BridgedImportKind cImportKind,
BridgedSourceLoc cImportKindLoc,
BridgedArrayRef cImportPathElements);
SWIFT_NAME("BridgedGenericParamList.createParsed(_:leftAngleLoc:parameters:"
"genericWhereClause:rightAngleLoc:)")
BridgedGenericParamList GenericParamList_createParsed(
BridgedASTContext cContext, BridgedSourceLoc cLeftAngleLoc,
BridgedArrayRef cParameters,
BridgedNullableTrailingWhereClause genericWhereClause,
BridgedSourceLoc cRightAngleLoc);
SWIFT_NAME(
"BridgedGenericTypeParamDecl.createParsed(_:declContext:eachKeywordLoc:"
"name:nameLoc:inheritedType:index:)")
BridgedGenericTypeParamDecl GenericTypeParamDecl_createParsed(
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
BridgedSourceLoc cEachLoc, BridgedIdentifier cName,
BridgedSourceLoc cNameLoc, BridgedNullableTypeRepr opaqueInheritedType,
size_t index);
SWIFT_NAME(
"BridgedTrailingWhereClause.createParsed(_:whereKeywordLoc:requirements:)")
BridgedTrailingWhereClause
TrailingWhereClause_createParsed(BridgedASTContext cContext,
BridgedSourceLoc cWhereKeywordLoc,
BridgedArrayRef cRequirements);
SWIFT_NAME("BridgedParameterList.createParsed(_:leftParenLoc:parameters:"
"rightParenLoc:)")
BridgedParameterList ParameterList_createParsed(
BridgedASTContext cContext, BridgedSourceLoc cLeftParenLoc,
BridgedArrayRef cParameters, BridgedSourceLoc cRightParenLoc);
BridgedTypeAttrKind TypeAttrKind_fromString(BridgedStringRef cStr);
BridgedTypeAttributes TypeAttributes_create(void);
void TypeAttributes_addSimpleAttr(BridgedTypeAttributes cAttributes,
BridgedTypeAttrKind kind,
BridgedSourceLoc cAtLoc,
BridgedSourceLoc cAttrLoc);
SWIFT_NAME(
"BridgedArrayTypeRepr.createParsed(_:base:leftSquareLoc:rightSquareLoc:)")
BridgedTypeRepr ArrayTypeRepr_createParsed(BridgedASTContext cContext,
BridgedTypeRepr base,
BridgedSourceLoc cLSquareLoc,
BridgedSourceLoc cRSquareLoc);
SWIFT_NAME("BridgedAttributedTypeRepr.createParsed(_:base:attributes:)")
BridgedTypeRepr
AttributedTypeRepr_createParsed(BridgedASTContext cContext,
BridgedTypeRepr base,
BridgedTypeAttributes cAttributes);
SWIFT_NAME(
"BridgedSpecifierTypeRepr.createParsed(_:base:specifier:specifierLoc:)")
BridgedTypeRepr
SpecifierTypeRepr_createParsed(BridgedASTContext cContext, BridgedTypeRepr base,
BridgedAttributedTypeSpecifier specifier,
BridgedSourceLoc cSpecifierLoc);
SWIFT_NAME("BridgedCompositionTypeRepr.createEmpty(_:anyKeywordLoc:)")
BridgedTypeRepr CompositionTypeRepr_createEmpty(BridgedASTContext cContext,
BridgedSourceLoc cAnyLoc);
SWIFT_NAME("BridgedCompositionTypeRepr.createParsed(_:types:ampersandLoc:)")
BridgedTypeRepr CompositionTypeRepr_createParsed(BridgedASTContext cContext,
BridgedArrayRef types,
BridgedSourceLoc cFirstAmpLoc);
SWIFT_NAME("BridgedDictionaryTypeRepr.createParsed(_:leftSquareLoc:keyType:"
"colonLoc:valueType:rightSquareLoc:)")
BridgedTypeRepr DictionaryTypeRepr_createParsed(BridgedASTContext cContext,
BridgedSourceLoc cLSquareLoc,
BridgedTypeRepr keyType,
BridgedSourceLoc cColonloc,
BridgedTypeRepr valueType,
BridgedSourceLoc cRSquareLoc);
SWIFT_NAME("BridgedFunctionTypeRepr.createParsed(_:argsType:asyncLoc:throwsLoc:"
"thrownType:arrowLoc:resultType:)")
BridgedTypeRepr FunctionTypeRepr_createParsed(
BridgedASTContext cContext, BridgedTypeRepr argsTy,
BridgedSourceLoc cAsyncLoc, BridgedSourceLoc cThrowsLoc,
BridgedNullableTypeRepr thrownType, BridgedSourceLoc cArrowLoc,
BridgedTypeRepr resultType);
SWIFT_NAME("BridgedGenericIdentTypeRepr.createParsed(_:name:nameLoc:"
"genericArgs:leftAngleLoc:rightAngleLoc:)")
BridgedTypeRepr GenericIdentTypeRepr_createParsed(BridgedASTContext cContext,
BridgedIdentifier name,
BridgedSourceLoc cNameLoc,
BridgedArrayRef genericArgs,
BridgedSourceLoc cLAngleLoc,
BridgedSourceLoc cRAngleLoc);
SWIFT_NAME("BridgedOptionalTypeRepr.createParsed(_:base:questionLoc:)")
BridgedTypeRepr OptionalTypeRepr_createParsed(BridgedASTContext cContext,
BridgedTypeRepr base,
BridgedSourceLoc cQuestionLoc);
SWIFT_NAME("BridgedImplicitlyUnwrappedOptionalTypeRepr.createParsed(_:base:"
"exclaimLoc:)")
BridgedTypeRepr ImplicitlyUnwrappedOptionalTypeRepr_createParsed(
BridgedASTContext cContext, BridgedTypeRepr base,
BridgedSourceLoc cExclamationLoc);
SWIFT_NAME("BridgedMemberTypeRepr.createParsed(_:base:members:)")
BridgedTypeRepr
MemberTypeRepr_createParsed(BridgedASTContext cContext,
BridgedTypeRepr baseComponent,
BridgedArrayRef bridgedMemberComponents);
SWIFT_NAME("BridgedMetatypeTypeRepr.createParsed(_:base:typeKeywordLoc:)")
BridgedTypeRepr MetatypeTypeRepr_createParsed(BridgedASTContext cContext,
BridgedTypeRepr baseType,
BridgedSourceLoc cTypeLoc);
SWIFT_NAME("BridgedProtocolTypeRepr.createParsed(_:base:protocolKeywordLoc:)")
BridgedTypeRepr ProtocolTypeRepr_createParsed(BridgedASTContext cContext,
BridgedTypeRepr baseType,
BridgedSourceLoc cProtoLoc);
SWIFT_NAME(
"BridgedPackExpansionTypeRepr.createParsed(_:base:repeatKeywordLoc:)")
BridgedTypeRepr PackExpansionTypeRepr_createParsed(BridgedASTContext cContext,
BridgedTypeRepr base,
BridgedSourceLoc cRepeatLoc);
SWIFT_NAME(
"BridgedTupleTypeRepr.createParsed(_:elements:leftParenLoc:rightParenLoc:)")
BridgedTypeRepr TupleTypeRepr_createParsed(BridgedASTContext cContext,
BridgedArrayRef elements,
BridgedSourceLoc cLParenLoc,
BridgedSourceLoc cRParenLoc);
SWIFT_NAME("BridgedNamedOpaqueReturnTypeRepr.createParsed(_:base:)")
BridgedTypeRepr
NamedOpaqueReturnTypeRepr_createParsed(BridgedASTContext cContext,
BridgedTypeRepr baseTy);
SWIFT_NAME("BridgedOpaqueReturnTypeRepr.createParsed(_:someKeywordLoc:base:)")
BridgedTypeRepr OpaqueReturnTypeRepr_createParsed(BridgedASTContext cContext,
BridgedSourceLoc cOpaqueLoc,
BridgedTypeRepr baseTy);
SWIFT_NAME("BridgedExistentialTypeRepr.createParsed(_:anyKeywordLoc:base:)")
BridgedTypeRepr ExistentialTypeRepr_createParsed(BridgedASTContext cContext,
BridgedSourceLoc cAnyLoc,
BridgedTypeRepr baseTy);
SWIFT_NAME("BridgedVarargTypeRepr.createParsed(_:base:ellipsisLoc:)")
BridgedTypeRepr VarargTypeRepr_createParsed(BridgedASTContext cContext,
BridgedTypeRepr base,
BridgedSourceLoc cEllipsisLoc);
SWIFT_NAME("BridgedTopLevelCodeDecl.dump(self:)")
void TopLevelCodeDecl_dump(BridgedTopLevelCodeDecl decl);
SWIFT_NAME("BridgedExpr.dump(self:)")
void Expr_dump(BridgedExpr expr);
SWIFT_NAME("BridgedDecl.dump(self:)")
void Decl_dump(BridgedDecl decl);
SWIFT_NAME("BridgedStmt.dump(self:)")
void Stmt_dump(BridgedStmt statement);
SWIFT_NAME("BridgedTypeRepr.dump(self:)")
void TypeRepr_dump(BridgedTypeRepr type);
//===----------------------------------------------------------------------===//
// Plugins
//===----------------------------------------------------------------------===//
typedef void *PluginHandle;
typedef const void *PluginCapabilityPtr;
/// Set a capability data to the plugin object. Since the data is just a opaque
/// pointer, it's not used in AST at all.
void Plugin_setCapability(PluginHandle handle, PluginCapabilityPtr _Nullable data);
/// Get a capability data set by \c Plugin_setCapability .
PluginCapabilityPtr _Nullable Plugin_getCapability(PluginHandle handle);
/// Get the executable file path of the plugin.
const char *Plugin_getExecutableFilePath(PluginHandle handle);
/// Lock the plugin. Clients should lock it during sending and recving the
/// response.
void Plugin_lock(PluginHandle handle);
/// Unlock the plugin.
void Plugin_unlock(PluginHandle handle);
/// Launch the plugin if it's not running.
_Bool Plugin_spawnIfNeeded(PluginHandle handle);
/// Sends the message to the plugin, returns true if there was an error.
/// Clients should receive the response by \c Plugin_waitForNextMessage .
_Bool Plugin_sendMessage(PluginHandle handle, const BridgedData data);
/// Receive a message from the plugin.
_Bool Plugin_waitForNextMessage(PluginHandle handle, BridgedData *data);
#ifdef __cplusplus
}
#endif
SWIFT_END_ASSUME_NONNULL
SWIFT_END_NULLABILITY_ANNOTATIONS
#undef SWIFT_NAME
#endif // SWIFT_C_AST_ASTBRIDGING_H

View File

@@ -99,10 +99,48 @@ typedef uintptr_t SwiftUInt;
#define BRIDGING_WRAPPER_NULLABLE(Name) \
BRIDGING_WRAPPER_IMPL(Name, Nullable##Name, _Nullable)
//===----------------------------------------------------------------------===//
// ArrayRef
//===----------------------------------------------------------------------===//
struct BridgedArrayRef {
const void *_Nullable data;
size_t numElements;
};
//===----------------------------------------------------------------------===//
// Data
//===----------------------------------------------------------------------===//
typedef struct BridgedData {
const char *_Nullable baseAddress;
size_t size;
} BridgedData;
void BridgedData_free(BridgedData data);
//===----------------------------------------------------------------------===//
// Feature
//===----------------------------------------------------------------------===//
typedef enum ENUM_EXTENSIBILITY_ATTR(open) BridgedFeature {
#define LANGUAGE_FEATURE(FeatureName, SENumber, Description, Option) \
FeatureName,
#include "swift/Basic/Features.def"
} BridgedFeature;
//===----------------------------------------------------------------------===//
// OStream
//===----------------------------------------------------------------------===//
struct BridgedOStream {
void * _Nonnull streamAddr;
};
//===----------------------------------------------------------------------===//
// StringRef
//===----------------------------------------------------------------------===//
class BridgedStringRef {
const char *_Nullable Data;
size_t Length;
@@ -156,6 +194,10 @@ BRIDGED_INLINE SwiftInt BridgedOwnedString_count(BridgedOwnedString str);
SWIFT_NAME("getter:BridgedOwnedString.isEmpty(self:)")
BRIDGED_INLINE bool BridgedOwnedString_empty(BridgedOwnedString str);
//===----------------------------------------------------------------------===//
// SourceLoc
//===----------------------------------------------------------------------===//
class BridgedSourceLoc {
const void *_Nullable Raw;
@@ -185,10 +227,85 @@ public:
SWIFT_NAME("getter:BridgedSourceLoc.isValid(self:)")
BRIDGED_INLINE bool BridgedSourceLoc_isValid(BridgedSourceLoc str);
struct BridgedArrayRef {
const void * _Nullable data;
size_t numElements;
};
//===----------------------------------------------------------------------===//
// SourceRange
//===----------------------------------------------------------------------===//
typedef struct {
BridgedSourceLoc startLoc;
BridgedSourceLoc endLoc;
} BridgedSourceRange;
typedef struct {
void *_Nonnull start;
size_t byteLength;
} BridgedCharSourceRange;
//===----------------------------------------------------------------------===//
// Plugins
//===----------------------------------------------------------------------===//
SWIFT_BEGIN_ASSUME_NONNULL
/// Create a new root 'null' JSON value. Clients must call \c JSON_value_delete
/// after using it.
void *JSON_newValue();
/// Parse \p data as a JSON data and return the top-level value. Clients must
/// call \c JSON_value_delete after using it.
void *JSON_deserializedValue(BridgedData data);
/// Serialize a value and populate \p result with the result data. Clients
/// must call \c BridgedData_free after using the \p result.
void JSON_value_serialize(void *valuePtr, BridgedData *result);
/// Destroy and release the memory for \p valuePtr that is a result from
/// \c JSON_newValue() or \c JSON_deserializedValue() .
void JSON_value_delete(void *valuePtr);
bool JSON_value_getAsNull(void *valuePtr);
bool JSON_value_getAsBoolean(void *valuePtr, bool *result);
bool JSON_value_getAsString(void *valuePtr, BridgedData *result);
bool JSON_value_getAsDouble(void *valuePtr, double *result);
bool JSON_value_getAsInteger(void *valuePtr, int64_t *result);
bool JSON_value_getAsObject(void *valuePtr, void *_Nullable *_Nonnull result);
bool JSON_value_getAsArray(void *valuePtr, void *_Nullable *_Nonnull result);
size_t JSON_object_getSize(void *objectPtr);
BridgedData JSON_object_getKey(void *objectPtr, size_t i);
bool JSON_object_hasKey(void *objectPtr, const char *key);
void *JSON_object_getValue(void *objectPtr, const char *key);
size_t JSON_array_getSize(void *arrayPtr);
void *JSON_array_getValue(void *arrayPtr, size_t index);
void JSON_value_emplaceNull(void *valuePtr);
void JSON_value_emplaceBoolean(void *valuePtr, bool value);
void JSON_value_emplaceString(void *valuePtr, const char *value);
void JSON_value_emplaceDouble(void *valuePtr, double value);
void JSON_value_emplaceInteger(void *valuePtr, int64_t value);
void *JSON_value_emplaceNewObject(void *valuePtr);
void *JSON_value_emplaceNewArray(void *valuePtr);
void JSON_object_setNull(void *objectPtr, const char *key);
void JSON_object_setBoolean(void *objectPtr, const char *key, bool value);
void JSON_object_setString(void *objectPtr, const char *key, const char *value);
void JSON_object_setDouble(void *objectPtr, const char *key, double value);
void JSON_object_setInteger(void *objectPtr, const char *key, int64_t value);
void *JSON_object_setNewObject(void *objectPtr, const char *key);
void *JSON_object_setNewArray(void *objectPtr, const char *key);
void *JSON_object_setNewValue(void *objectPtr, const char *key);
void JSON_array_pushNull(void *arrayPtr);
void JSON_array_pushBoolean(void *arrayPtr, bool value);
void JSON_array_pushString(void *arrayPtr, const char *value);
void JSON_array_pushDouble(void *arrayPtr, double value);
void JSON_array_pushInteger(void *arrayPtr, int64_t value);
void *JSON_array_pushNewObject(void *arrayPtr);
void *JSON_array_pushNewArray(void *arrayPtr);
void *JSON_array_pushNewValue(void *arrayPtr);
SWIFT_END_ASSUME_NONNULL
SWIFT_END_NULLABILITY_ANNOTATIONS

View File

@@ -1,115 +0,0 @@
//===--- CBasicBridging.h - header for the swift SILBridging module -------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2023 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_C_BASIC_BASICBRIDGING_H
#define SWIFT_C_BASIC_BASICBRIDGING_H
#include "swift/Basic/Compiler.h"
#include "swift/Basic/Nullability.h"
#include <stddef.h>
#include <stdint.h>
SWIFT_BEGIN_NULLABILITY_ANNOTATIONS
#ifdef __cplusplus
extern "C" {
#define _Bool bool
#endif
typedef enum ENUM_EXTENSIBILITY_ATTR(open) BridgedFeature {
#define LANGUAGE_FEATURE(FeatureName, SENumber, Description, Option) \
FeatureName,
#include "swift/Basic/Features.def"
} BridgedFeature;
SWIFT_BEGIN_ASSUME_NONNULL
typedef struct BridgedData {
const char *_Nullable baseAddress;
size_t size;
} BridgedData;
void BridgedData_free(BridgedData data);
//===----------------------------------------------------------------------===//
// Plugins
//===----------------------------------------------------------------------===//
/// Create a new root 'null' JSON value. Clients must call \c JSON_value_delete
/// after using it.
void *JSON_newValue();
/// Parse \p data as a JSON data and return the top-level value. Clients must
/// call \c JSON_value_delete after using it.
void *JSON_deserializedValue(BridgedData data);
/// Serialize a value and populate \p result with the result data. Clients
/// must call \c BridgedData_free after using the \p result.
void JSON_value_serialize(void *valuePtr, BridgedData *result);
/// Destroy and release the memory for \p valuePtr that is a result from
/// \c JSON_newValue() or \c JSON_deserializedValue() .
void JSON_value_delete(void *valuePtr);
_Bool JSON_value_getAsNull(void *valuePtr);
_Bool JSON_value_getAsBoolean(void *valuePtr, _Bool *result);
_Bool JSON_value_getAsString(void *valuePtr, BridgedData *result);
_Bool JSON_value_getAsDouble(void *valuePtr, double *result);
_Bool JSON_value_getAsInteger(void *valuePtr, int64_t *result);
_Bool JSON_value_getAsObject(void *valuePtr, void *_Nullable *_Nonnull result);
_Bool JSON_value_getAsArray(void *valuePtr, void *_Nullable *_Nonnull result);
size_t JSON_object_getSize(void *objectPtr);
BridgedData JSON_object_getKey(void *objectPtr, size_t i);
_Bool JSON_object_hasKey(void *objectPtr, const char *key);
void *JSON_object_getValue(void *objectPtr, const char *key);
size_t JSON_array_getSize(void *arrayPtr);
void *JSON_array_getValue(void *arrayPtr, size_t index);
void JSON_value_emplaceNull(void *valuePtr);
void JSON_value_emplaceBoolean(void *valuePtr, _Bool value);
void JSON_value_emplaceString(void *valuePtr, const char *value);
void JSON_value_emplaceDouble(void *valuePtr, double value);
void JSON_value_emplaceInteger(void *valuePtr, int64_t value);
void *JSON_value_emplaceNewObject(void *valuePtr);
void *JSON_value_emplaceNewArray(void *valuePtr);
void JSON_object_setNull(void *objectPtr, const char *key);
void JSON_object_setBoolean(void *objectPtr, const char *key, _Bool value);
void JSON_object_setString(void *objectPtr, const char *key, const char *value);
void JSON_object_setDouble(void *objectPtr, const char *key, double value);
void JSON_object_setInteger(void *objectPtr, const char *key, int64_t value);
void *JSON_object_setNewObject(void *objectPtr, const char *key);
void *JSON_object_setNewArray(void *objectPtr, const char *key);
void *JSON_object_setNewValue(void *objectPtr, const char *key);
void JSON_array_pushNull(void *arrayPtr);
void JSON_array_pushBoolean(void *arrayPtr, _Bool value);
void JSON_array_pushString(void *arrayPtr, const char *value);
void JSON_array_pushDouble(void *arrayPtr, double value);
void JSON_array_pushInteger(void *arrayPtr, int64_t value);
void *JSON_array_pushNewObject(void *arrayPtr);
void *JSON_array_pushNewArray(void *arrayPtr);
void *JSON_array_pushNewValue(void *arrayPtr);
#ifdef __cplusplus
}
#endif
SWIFT_END_ASSUME_NONNULL
SWIFT_END_NULLABILITY_ANNOTATIONS
#endif // SWIFT_C_BASIC_BASICBRIDGING_H

View File

@@ -10,7 +10,7 @@
//
//===----------------------------------------------------------------------===//
#include "swift/AST/CASTBridging.h"
#include "swift/AST/ASTBridging.h"
#ifdef __cplusplus
extern "C" {

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -29,7 +29,6 @@ add_swift_host_library(swiftAST STATIC
Availability.cpp
AvailabilitySpec.cpp
Builtins.cpp
CASTBridging.cpp
CaptureInfo.cpp
ClangSwiftTypeCorrespondence.cpp
ClangTypeConverter.cpp

View File

@@ -1,7 +1,5 @@
import ASTBridging
import BasicBridging
import CASTBridging
import CBasicBridging
// Needed to use BumpPtrAllocator
@_spi(BumpPtrAllocator) import SwiftSyntax

View File

@@ -1,6 +1,5 @@
import ASTBridging
import BasicBridging
import CASTBridging
import CBasicBridging
import SwiftSyntax
extension BridgedSourceLoc: ExpressibleByNilLiteral {

View File

@@ -1,5 +1,5 @@
import ASTBridging
import BasicBridging
import CASTBridging
import SwiftDiagnostics
@_spi(ExperimentalLanguageFeatures) import SwiftSyntax

View File

@@ -1,6 +1,5 @@
import ASTBridging
import BasicBridging
import CASTBridging
import SwiftDiagnostics
import SwiftSyntax

View File

@@ -1,4 +1,4 @@
import CASTBridging
import ASTBridging
import SwiftDiagnostics
import SwiftSyntax

View File

@@ -1,5 +1,4 @@
import CASTBridging
import CBasicBridging
import ASTBridging
import SwiftSyntax
extension ASTGenVisitor {

View File

@@ -1,4 +1,4 @@
import CASTBridging
import ASTBridging
import SwiftSyntax
extension ASTGenVisitor {

View File

@@ -10,8 +10,8 @@
//
//===----------------------------------------------------------------------===//
import ASTBridging
import BasicBridging
import CASTBridging
import SwiftCompilerPluginMessageHandling
import SwiftDiagnostics
import SwiftOperators

View File

@@ -10,8 +10,8 @@
//
//===----------------------------------------------------------------------===//
import ASTBridging
import BasicBridging
import CASTBridging
import SwiftSyntax
// MARK: - ParamDecl

View File

@@ -12,8 +12,6 @@
import ASTBridging
import BasicBridging
import CASTBridging
import CBasicBridging
import SwiftCompilerPluginMessageHandling
import SwiftSyntax
import swiftLLVMJSON

View File

@@ -1,6 +1,4 @@
import ASTBridging
import CASTBridging
import CBasicBridging
import SwiftDiagnostics
@_spi(ExperimentalLanguageFeatures) import SwiftParser
import SwiftParserDiagnostics

View File

@@ -1,6 +1,5 @@
import ASTBridging
import BasicBridging
import CASTBridging
import SwiftOperators
import SwiftSyntax
import SwiftSyntaxMacros

View File

@@ -1,4 +1,4 @@
import CASTBridging
import ASTBridging
import SwiftSyntax
extension ASTGenVisitor {

View File

@@ -1,5 +1,5 @@
import ASTBridging
import BasicBridging
import CASTBridging
import SwiftDiagnostics
@_spi(ExperimentalLanguageFeatures) import SwiftSyntax

View File

@@ -10,7 +10,10 @@
//
//===----------------------------------------------------------------------===//
import CBasicBridging
// Building the BasicBridging module requires a bunch of '-Xcc' args, which
// don't currently end up in the module interface. So import as
// @_implementationOnly.
@_implementationOnly import BasicBridging
extension String {
init(_ data: BridgedData) {

View File

@@ -10,7 +10,8 @@
//
//===----------------------------------------------------------------------===//
#include "swift/Basic/BridgingUtils.h"
#include "swift/Basic/BasicBridging.h"
#include "llvm/Support/JSON.h"
#include "llvm/Support/raw_ostream.h"
#ifdef PURE_BRIDGING_MODE
@@ -46,3 +47,238 @@ void BridgedOwnedString::destroy() const {
delete[] Data;
}
//===----------------------------------------------------------------------===//
// Data
//===----------------------------------------------------------------------===//
void BridgedData_free(BridgedData data) {
if (data.baseAddress == nullptr)
return;
free(const_cast<char *>(data.baseAddress));
}
//===----------------------------------------------------------------------===//
// JSON
//===----------------------------------------------------------------------===//
void *JSON_newValue() { return new llvm::json::Value(nullptr); }
void *JSON_deserializedValue(BridgedData data) {
auto result = llvm::json::parse({data.baseAddress, data.size});
if (!result) {
return nullptr;
}
return new llvm::json::Value(std::move(*result));
}
void JSON_value_serialize(void *value, BridgedData *out) {
llvm::SmallVector<char, 0> result;
llvm::raw_svector_ostream OS(result);
OS << *static_cast<llvm::json::Value *>(value);
auto outPtr = malloc(result.size());
memcpy(outPtr, result.data(), result.size());
*out = BridgedData{(const char *)outPtr, (size_t)result.size()};
}
void JSON_value_delete(void *value) {
delete static_cast<llvm::json::Value *>(value);
}
bool JSON_value_getAsNull(void *value) {
if (auto val = static_cast<llvm::json::Value *>(value)->getAsNull()) {
return true;
}
return false;
}
bool JSON_value_getAsBoolean(void *value, bool *result) {
if (auto val = static_cast<llvm::json::Value *>(value)->getAsBoolean()) {
*result = *val;
return false;
}
return true;
}
bool JSON_value_getAsDouble(void *value, double *result) {
if (auto val = static_cast<llvm::json::Value *>(value)->getAsNumber()) {
*result = *val;
return false;
}
return true;
}
bool JSON_value_getAsInteger(void *value, int64_t *result) {
if (auto val = static_cast<llvm::json::Value *>(value)->getAsInteger()) {
*result = *val;
return false;
}
return true;
}
bool JSON_value_getAsString(void *value, BridgedData *result) {
if (auto val = static_cast<llvm::json::Value *>(value)->getAsString()) {
*result = {val->data(), val->size()};
return false;
}
return true;
}
bool JSON_value_getAsObject(void *value, void **result) {
if (auto val = static_cast<llvm::json::Value *>(value)->getAsObject()) {
*result = val;
return false;
}
return true;
}
bool JSON_value_getAsArray(void *value, void **result) {
if (auto val = static_cast<llvm::json::Value *>(value)->getAsArray()) {
*result = val;
return false;
}
return true;
}
size_t JSON_object_getSize(void *objectPtr) {
llvm::json::Object *object = static_cast<llvm::json::Object *>(objectPtr);
return object->size();
}
BridgedData JSON_object_getKey(void *objectPtr, size_t i) {
llvm::json::Object *object = static_cast<llvm::json::Object *>(objectPtr);
std::map<int, float> map;
auto iter = object->begin();
std::advance(iter, i);
auto str = llvm::StringRef(iter->first);
return {str.data(), str.size()};
}
bool JSON_object_hasKey(void *objectPtr, const char *key) {
llvm::json::Object *object = static_cast<llvm::json::Object *>(objectPtr);
return object->find(key) != object->end();
}
void *JSON_object_getValue(void *objectPtr, const char *key) {
llvm::json::Object *object = static_cast<llvm::json::Object *>(objectPtr);
return object->get(key);
}
size_t JSON_array_getSize(void *objectPtr) {
llvm::json::Array *array = static_cast<llvm::json::Array *>(objectPtr);
return array->size();
}
void *JSON_array_getValue(void *objectPtr, size_t index) {
llvm::json::Array *array = static_cast<llvm::json::Array *>(objectPtr);
return array->data() + index;
}
void JSON_value_emplaceNull(void *valuePtr) {
auto *value = static_cast<llvm::json::Value *>(valuePtr);
*value = nullptr;
}
void JSON_value_emplaceBoolean(void *valuePtr, bool newValue) {
auto *value = static_cast<llvm::json::Value *>(valuePtr);
*value = newValue;
}
void JSON_value_emplaceString(void *valuePtr, const char *newValue) {
auto *value = static_cast<llvm::json::Value *>(valuePtr);
*value = std::string(newValue);
}
void JSON_value_emplaceDouble(void *valuePtr, double newValue) {
auto *value = static_cast<llvm::json::Value *>(valuePtr);
*value = newValue;
}
void JSON_value_emplaceInteger(void *valuePtr, int64_t newValue) {
auto *value = static_cast<llvm::json::Value *>(valuePtr);
*value = newValue;
}
void *JSON_value_emplaceNewObject(void *valuePtr) {
auto *value = static_cast<llvm::json::Value *>(valuePtr);
*value = llvm::json::Object();
return value->getAsObject();
}
void *JSON_value_emplaceNewArray(void *valuePtr) {
auto *value = static_cast<llvm::json::Value *>(valuePtr);
*value = llvm::json::Array();
return value->getAsArray();
}
void JSON_object_setNull(void *objectPtr, const char *key) {
llvm::json::Object *object = static_cast<llvm::json::Object *>(objectPtr);
auto keyStr = std::string(key);
(*object)[keyStr] = nullptr;
}
void JSON_object_setBoolean(void *objectPtr, const char *key, bool value) {
llvm::json::Object *object = static_cast<llvm::json::Object *>(objectPtr);
auto keyStr = std::string(key);
(*object)[keyStr] = value;
}
void JSON_object_setString(void *objectPtr, const char *key,
const char *value) {
llvm::json::Object *object = static_cast<llvm::json::Object *>(objectPtr);
auto keyStr = std::string(key);
(*object)[keyStr] = std::string(value);
}
void JSON_object_setDouble(void *objectPtr, const char *key, double value) {
llvm::json::Object *object = static_cast<llvm::json::Object *>(objectPtr);
auto keyStr = std::string(key);
(*object)[keyStr] = value;
}
void JSON_object_setInteger(void *objectPtr, const char *key, int64_t value) {
llvm::json::Object *object = static_cast<llvm::json::Object *>(objectPtr);
auto keyStr = std::string(key);
(*object)[keyStr] = value;
}
void *JSON_object_setNewObject(void *objectPtr, const char *key) {
llvm::json::Object *object = static_cast<llvm::json::Object *>(objectPtr);
auto keyStr = std::string(key);
(*object)[keyStr] = llvm::json::Object();
return object->getObject(keyStr);
}
void *JSON_object_setNewArray(void *objectPtr, const char *key) {
llvm::json::Object *object = static_cast<llvm::json::Object *>(objectPtr);
auto keyStr = std::string(key);
(*object)[keyStr] = llvm::json::Array();
return object->getArray(keyStr);
}
void *JSON_object_setNewValue(void *objectPtr, const char *key) {
llvm::json::Object *object = static_cast<llvm::json::Object *>(objectPtr);
auto keyStr = std::string(key);
(*object)[keyStr] = llvm::json::Value(nullptr);
return object->get(keyStr);
}
void JSON_array_pushNull(void *arrayPtr) {
llvm::json::Array *array = static_cast<llvm::json::Array *>(arrayPtr);
array->emplace_back(nullptr);
}
void JSON_array_pushBoolean(void *arrayPtr, bool value) {
llvm::json::Array *array = static_cast<llvm::json::Array *>(arrayPtr);
array->emplace_back(value);
}
void JSON_array_pushString(void *arrayPtr, const char *value) {
llvm::json::Array *array = static_cast<llvm::json::Array *>(arrayPtr);
array->emplace_back(std::string(value));
}
void JSON_array_pushDouble(void *arrayPtr, double value) {
llvm::json::Array *array = static_cast<llvm::json::Array *>(arrayPtr);
array->emplace_back(value);
}
void JSON_array_pushInteger(void *arrayPtr, int64_t value) {
llvm::json::Array *array = static_cast<llvm::json::Array *>(arrayPtr);
array->emplace_back(value);
}
void *JSON_array_pushNewObject(void *arrayPtr) {
llvm::json::Array *array = static_cast<llvm::json::Array *>(arrayPtr);
array->emplace_back(llvm::json::Object());
return array->back().getAsObject();
}
void *JSON_array_pushNewArray(void *arrayPtr) {
llvm::json::Array *array = static_cast<llvm::json::Array *>(arrayPtr);
array->emplace_back(llvm::json::Array());
return array->back().getAsArray();
}
void *JSON_array_pushNewValue(void *arrayPtr) {
llvm::json::Array *array = static_cast<llvm::json::Array *>(arrayPtr);
array->emplace_back(nullptr);
return &array->back();
}

View File

@@ -1,246 +0,0 @@
//===--- CBasicBridging.cpp -----------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2023 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
//
//===----------------------------------------------------------------------===//
#include "swift/Basic/CBasicBridging.h"
#include "llvm/Support/JSON.h"
void BridgedData_free(BridgedData data) {
if (data.baseAddress == nullptr)
return;
free(const_cast<char *>(data.baseAddress));
}
//===----------------------------------------------------------------------===//
// JSON
//===----------------------------------------------------------------------===//
void *JSON_newValue() { return new llvm::json::Value(nullptr); }
void *JSON_deserializedValue(BridgedData data) {
auto result = llvm::json::parse({data.baseAddress, data.size});
if (!result) {
return nullptr;
}
return new llvm::json::Value(std::move(*result));
}
void JSON_value_serialize(void *value, BridgedData *out) {
llvm::SmallVector<char, 0> result;
llvm::raw_svector_ostream OS(result);
OS << *static_cast<llvm::json::Value *>(value);
auto outPtr = malloc(result.size());
memcpy(outPtr, result.data(), result.size());
*out = BridgedData{(const char *)outPtr, (size_t)result.size()};
}
void JSON_value_delete(void *value) {
delete static_cast<llvm::json::Value *>(value);
}
_Bool JSON_value_getAsNull(void *value) {
if (auto val = static_cast<llvm::json::Value *>(value)->getAsNull()) {
return true;
}
return false;
}
_Bool JSON_value_getAsBoolean(void *value, _Bool *result) {
if (auto val = static_cast<llvm::json::Value *>(value)->getAsBoolean()) {
*result = *val;
return false;
}
return true;
}
_Bool JSON_value_getAsDouble(void *value, double *result) {
if (auto val = static_cast<llvm::json::Value *>(value)->getAsNumber()) {
*result = *val;
return false;
}
return true;
}
_Bool JSON_value_getAsInteger(void *value, int64_t *result) {
if (auto val = static_cast<llvm::json::Value *>(value)->getAsInteger()) {
*result = *val;
return false;
}
return true;
}
_Bool JSON_value_getAsString(void *value, BridgedData *result) {
if (auto val = static_cast<llvm::json::Value *>(value)->getAsString()) {
*result = {val->data(), val->size()};
return false;
}
return true;
}
_Bool JSON_value_getAsObject(void *value, void **result) {
if (auto val = static_cast<llvm::json::Value *>(value)->getAsObject()) {
*result = val;
return false;
}
return true;
}
_Bool JSON_value_getAsArray(void *value, void **result) {
if (auto val = static_cast<llvm::json::Value *>(value)->getAsArray()) {
*result = val;
return false;
}
return true;
}
size_t JSON_object_getSize(void *objectPtr) {
llvm::json::Object *object = static_cast<llvm::json::Object *>(objectPtr);
return object->size();
}
BridgedData JSON_object_getKey(void *objectPtr, size_t i) {
llvm::json::Object *object = static_cast<llvm::json::Object *>(objectPtr);
std::map<int, float> map;
auto iter = object->begin();
std::advance(iter, i);
auto str = llvm::StringRef(iter->first);
return {str.data(), str.size()};
}
_Bool JSON_object_hasKey(void *objectPtr, const char *key) {
llvm::json::Object *object = static_cast<llvm::json::Object *>(objectPtr);
return object->find(key) != object->end();
}
void *JSON_object_getValue(void *objectPtr, const char *key) {
llvm::json::Object *object = static_cast<llvm::json::Object *>(objectPtr);
return object->get(key);
}
size_t JSON_array_getSize(void *objectPtr) {
llvm::json::Array *array = static_cast<llvm::json::Array *>(objectPtr);
return array->size();
}
void *JSON_array_getValue(void *objectPtr, size_t index) {
llvm::json::Array *array = static_cast<llvm::json::Array *>(objectPtr);
return array->data() + index;
}
void JSON_value_emplaceNull(void *valuePtr) {
auto *value = static_cast<llvm::json::Value *>(valuePtr);
*value = nullptr;
}
void JSON_value_emplaceBoolean(void *valuePtr, _Bool newValue) {
auto *value = static_cast<llvm::json::Value *>(valuePtr);
*value = newValue;
}
void JSON_value_emplaceString(void *valuePtr, const char *newValue) {
auto *value = static_cast<llvm::json::Value *>(valuePtr);
*value = std::string(newValue);
}
void JSON_value_emplaceDouble(void *valuePtr, double newValue) {
auto *value = static_cast<llvm::json::Value *>(valuePtr);
*value = newValue;
}
void JSON_value_emplaceInteger(void *valuePtr, int64_t newValue) {
auto *value = static_cast<llvm::json::Value *>(valuePtr);
*value = newValue;
}
void *JSON_value_emplaceNewObject(void *valuePtr) {
auto *value = static_cast<llvm::json::Value *>(valuePtr);
*value = llvm::json::Object();
return value->getAsObject();
}
void *JSON_value_emplaceNewArray(void *valuePtr) {
auto *value = static_cast<llvm::json::Value *>(valuePtr);
*value = llvm::json::Array();
return value->getAsArray();
}
void JSON_object_setNull(void *objectPtr, const char *key) {
llvm::json::Object *object = static_cast<llvm::json::Object *>(objectPtr);
auto keyStr = std::string(key);
(*object)[keyStr] = nullptr;
}
void JSON_object_setBoolean(void *objectPtr, const char *key, _Bool value) {
llvm::json::Object *object = static_cast<llvm::json::Object *>(objectPtr);
auto keyStr = std::string(key);
(*object)[keyStr] = value;
}
void JSON_object_setString(void *objectPtr, const char *key,
const char *value) {
llvm::json::Object *object = static_cast<llvm::json::Object *>(objectPtr);
auto keyStr = std::string(key);
(*object)[keyStr] = std::string(value);
}
void JSON_object_setDouble(void *objectPtr, const char *key, double value) {
llvm::json::Object *object = static_cast<llvm::json::Object *>(objectPtr);
auto keyStr = std::string(key);
(*object)[keyStr] = value;
}
void JSON_object_setInteger(void *objectPtr, const char *key, int64_t value) {
llvm::json::Object *object = static_cast<llvm::json::Object *>(objectPtr);
auto keyStr = std::string(key);
(*object)[keyStr] = value;
}
void *JSON_object_setNewObject(void *objectPtr, const char *key) {
llvm::json::Object *object = static_cast<llvm::json::Object *>(objectPtr);
auto keyStr = std::string(key);
(*object)[keyStr] = llvm::json::Object();
return object->getObject(keyStr);
}
void *JSON_object_setNewArray(void *objectPtr, const char *key) {
llvm::json::Object *object = static_cast<llvm::json::Object *>(objectPtr);
auto keyStr = std::string(key);
(*object)[keyStr] = llvm::json::Array();
return object->getArray(keyStr);
}
void *JSON_object_setNewValue(void *objectPtr, const char *key) {
llvm::json::Object *object = static_cast<llvm::json::Object *>(objectPtr);
auto keyStr = std::string(key);
(*object)[keyStr] = llvm::json::Value(nullptr);
return object->get(keyStr);
}
void JSON_array_pushNull(void *arrayPtr) {
llvm::json::Array *array = static_cast<llvm::json::Array *>(arrayPtr);
array->emplace_back(nullptr);
}
void JSON_array_pushBoolean(void *arrayPtr, _Bool value) {
llvm::json::Array *array = static_cast<llvm::json::Array *>(arrayPtr);
array->emplace_back(value);
}
void JSON_array_pushString(void *arrayPtr, const char *value) {
llvm::json::Array *array = static_cast<llvm::json::Array *>(arrayPtr);
array->emplace_back(std::string(value));
}
void JSON_array_pushDouble(void *arrayPtr, double value) {
llvm::json::Array *array = static_cast<llvm::json::Array *>(arrayPtr);
array->emplace_back(value);
}
void JSON_array_pushInteger(void *arrayPtr, int64_t value) {
llvm::json::Array *array = static_cast<llvm::json::Array *>(arrayPtr);
array->emplace_back(value);
}
void *JSON_array_pushNewObject(void *arrayPtr) {
llvm::json::Array *array = static_cast<llvm::json::Array *>(arrayPtr);
array->emplace_back(llvm::json::Object());
return array->back().getAsObject();
}
void *JSON_array_pushNewArray(void *arrayPtr) {
llvm::json::Array *array = static_cast<llvm::json::Array *>(arrayPtr);
array->emplace_back(llvm::json::Array());
return array->back().getAsArray();
}
void *JSON_array_pushNewValue(void *arrayPtr) {
llvm::json::Array *array = static_cast<llvm::json::Array *>(arrayPtr);
array->emplace_back(nullptr);
return &array->back();
}

View File

@@ -45,9 +45,7 @@ add_swift_host_library(swiftBasic STATIC
BasicBridging.cpp
BasicSourceInfo.cpp
Cache.cpp
CBasicBridging.cpp
ClusteredBitVector.cpp
CBasicBridging.cpp
DiverseStack.cpp
Edit.cpp
EditorPlaceholder.cpp

View File

@@ -15,7 +15,7 @@
//===----------------------------------------------------------------------===//
#include "swift/Frontend/PrintingDiagnosticConsumer.h"
#include "swift/AST/CASTBridging.h"
#include "swift/AST/ASTBridging.h"
#include "swift/AST/DiagnosticEngine.h"
#include "swift/AST/DiagnosticsCommon.h"
#include "swift/Basic/LLVM.h"

View File

@@ -16,7 +16,6 @@
#include "swift/AST/ASTWalker.h"
#include "swift/AST/Attr.h"
#include "swift/AST/CASTBridging.h"
#include "swift/AST/DebuggerClient.h"
#include "swift/AST/Decl.h"
#include "swift/AST/DiagnosticsParse.h"

View File

@@ -19,10 +19,10 @@
#include "TypeCheckType.h"
#include "TypeChecker.h"
#include "swift/ABI/MetadataValues.h"
#include "swift/AST/ASTBridging.h"
#include "swift/AST/ASTContext.h"
#include "swift/AST/ASTMangler.h"
#include "swift/AST/ASTNode.h"
#include "swift/AST/CASTBridging.h"
#include "swift/AST/DiagnosticsFrontend.h"
#include "swift/AST/Expr.h"
#include "swift/AST/FreestandingMacroExpansion.h"