mirror of
https://github.com/apple/swift.git
synced 2026-06-20 15:42:51 +02:00
b6e9e5c7ba
Introduce new syntax for parsing arbitrary integer literal expressions for generic value arguments: ```swift InlineArray<(<Expr>), T> [(<Expr>) of T] ``` Which, for now, will co-exist alongside the current syntax of simple integer literals. Replace `IntegerTypeRepr` with `GenericArgumentExprTypeRepr`, a new `TypeRepr` node that wraps arbitrary expressions in generic argument positions (e.g., `InlineArray<(1 + 3), Int>`). The node tracks resolution state, distinguishing whether the expression resolved to a type or an integer value. Key changes: - Parse parenthesized generic arguments as expressions - Recover and distinguish types from integer expressions in `resolveGenericArgumentExprTypeRepr`. - When the `LiteralExpressions` feature is enabled, type-check and constant-fold expressions to integer values - Extract `PreCheckTarget` into a public header to expose `simplifyTypeExpr` for use during type resolution Resolves rdar://168005391
32 lines
1.1 KiB
C++
32 lines
1.1 KiB
C++
//===------ InlinableText.h - Extract inlinable source text -----*- C++ -*-===//
|
|
//
|
|
// This source file is part of the Swift.org open source project
|
|
//
|
|
// Copyright (c) 2014 - 2018 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_AST_INLINABLETEXT_H
|
|
#define SWIFT_AST_INLINABLETEXT_H
|
|
|
|
#include "swift/AST/ASTNode.h"
|
|
#include "swift/Basic/LLVM.h"
|
|
#include "llvm/ADT/StringRef.h"
|
|
#include "llvm/ADT/SmallVector.h"
|
|
|
|
namespace swift {
|
|
class ASTContext;
|
|
|
|
/// Extracts the text of this ASTNode from the source buffer, ignoring
|
|
/// all #if declarations and clauses except the elements that are active.
|
|
StringRef extractInlinableText(ASTContext &ctx, ASTNode node,
|
|
SmallVectorImpl<char> &scratch);
|
|
|
|
} // end namespace swift
|
|
|
|
#endif // defined(SWIFT_AST_INLINABLETEXT_H)
|