mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
[AST/Parser] Convert TypeLoc struct into aligned class
This commit is contained in:
@@ -30,7 +30,7 @@ namespace swift {
|
||||
class Stmt;
|
||||
class Decl;
|
||||
class Pattern;
|
||||
struct TypeLoc;
|
||||
class TypeLoc;
|
||||
class DeclContext;
|
||||
class SourceLoc;
|
||||
class SourceRange;
|
||||
|
||||
@@ -30,7 +30,7 @@ namespace swift {
|
||||
class TypeDecl;
|
||||
class EnumElementDecl;
|
||||
class Type;
|
||||
struct TypeLoc;
|
||||
class TypeLoc;
|
||||
class Pattern;
|
||||
class ExtensionDecl;
|
||||
class NominalTypeDecl;
|
||||
|
||||
@@ -25,7 +25,7 @@ class ModuleDecl;
|
||||
class Stmt;
|
||||
class Pattern;
|
||||
class TypeRepr;
|
||||
struct TypeLoc;
|
||||
class TypeLoc;
|
||||
class ParameterList;
|
||||
enum class AccessKind: unsigned char;
|
||||
|
||||
|
||||
@@ -51,6 +51,7 @@ namespace swift {
|
||||
class TypeVariableType;
|
||||
class TypeBase;
|
||||
class TypeDecl;
|
||||
class TypeLoc;
|
||||
class ValueDecl;
|
||||
|
||||
/// We frequently use three tag bits on all of these types.
|
||||
@@ -63,6 +64,7 @@ namespace swift {
|
||||
constexpr size_t PatternAlignInBits = 3;
|
||||
constexpr size_t SILFunctionAlignInBits = 2;
|
||||
constexpr size_t TypeVariableAlignInBits = 4;
|
||||
constexpr size_t TypeLocAlignInBits = 3;
|
||||
}
|
||||
|
||||
namespace llvm {
|
||||
@@ -124,6 +126,8 @@ LLVM_DECLARE_TYPE_ALIGNMENT(swift::SILFunction,
|
||||
|
||||
LLVM_DECLARE_TYPE_ALIGNMENT(swift::AttributeBase, swift::AttrAlignInBits)
|
||||
|
||||
LLVM_DECLARE_TYPE_ALIGNMENT(swift::TypeLoc, swift::TypeLocAlignInBits)
|
||||
|
||||
static_assert(alignof(void*) >= 2, "pointer alignment is too small");
|
||||
|
||||
#endif
|
||||
|
||||
@@ -48,7 +48,7 @@ class RequirementRepr;
|
||||
class SpecializeAttr;
|
||||
class TrailingWhereClause;
|
||||
class TypeAliasDecl;
|
||||
struct TypeLoc;
|
||||
class TypeLoc;
|
||||
class Witness;
|
||||
struct TypeWitnessAndDecl;
|
||||
class ValueDecl;
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
|
||||
#include "swift/Basic/SourceLoc.h"
|
||||
#include "swift/AST/Type.h"
|
||||
#include "swift/AST/TypeAlignments.h"
|
||||
#include "llvm/ADT/PointerIntPair.h"
|
||||
|
||||
namespace swift {
|
||||
@@ -28,8 +29,7 @@ class TypeRepr;
|
||||
|
||||
/// TypeLoc - Provides source location information for a parsed type.
|
||||
/// A TypeLoc is stored in AST nodes which use an explicitly written type.
|
||||
struct TypeLoc {
|
||||
private:
|
||||
class alignas(1 << TypeLocAlignInBits) TypeLoc {
|
||||
Type Ty;
|
||||
TypeRepr *TyR = nullptr;
|
||||
|
||||
|
||||
@@ -54,7 +54,7 @@ namespace swift {
|
||||
class ScopeInfo;
|
||||
class SourceManager;
|
||||
class TupleType;
|
||||
struct TypeLoc;
|
||||
class TypeLoc;
|
||||
|
||||
struct EnumElementInfo;
|
||||
|
||||
|
||||
@@ -67,7 +67,7 @@ namespace swift {
|
||||
class Token;
|
||||
class TopLevelContext;
|
||||
class TypeCheckerOptions;
|
||||
struct TypeLoc;
|
||||
class TypeLoc;
|
||||
class UnifiedStatsReporter;
|
||||
|
||||
namespace Lowering {
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
namespace swift {
|
||||
|
||||
class Expr;
|
||||
struct TypeLoc;
|
||||
class TypeLoc;
|
||||
class VarDecl;
|
||||
class Pattern;
|
||||
class SourceManager;
|
||||
|
||||
Reference in New Issue
Block a user