mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-05 22:02:55 +01:00
Rename Ptr<T> to Nonnull<T*> (#832)
Note that ptr.h also includes an enable_if change, to help avoid https://bugs.llvm.org/show_bug.cgi?id=51881
This commit is contained in:
@@ -38,7 +38,7 @@
|
||||
// thus available to its methods.
|
||||
|
||||
// "inout" parameters passed to both the parser and the lexer.
|
||||
%param {Ptr<Arena> arena}
|
||||
%param {Nonnull<Arena*> arena}
|
||||
%param {yyscan_t yyscanner}
|
||||
%param {ParseAndLexContext& context}
|
||||
|
||||
@@ -98,43 +98,43 @@
|
||||
%type <std::vector<LibraryName>> import_directives
|
||||
%type <std::string> optional_library_path
|
||||
%type <bool> api_or_impl
|
||||
%type <BisonWrap<Ptr<const Declaration>>> declaration
|
||||
%type <BisonWrap<Ptr<const FunctionDefinition>>> function_declaration
|
||||
%type <BisonWrap<Ptr<const FunctionDefinition>>> function_definition
|
||||
%type <std::vector<Ptr<const Declaration>>> declaration_list
|
||||
%type <BisonWrap<Ptr<const Statement>>> statement
|
||||
%type <BisonWrap<Ptr<const Statement>>> if_statement
|
||||
%type <std::optional<Ptr<const Statement>>> optional_else
|
||||
%type <BisonWrap<std::pair<Ptr<const Expression>, bool>>> return_expression
|
||||
%type <BisonWrap<Ptr<const Statement>>> block
|
||||
%type <std::optional<Ptr<const Statement>>> statement_list
|
||||
%type <BisonWrap<Ptr<const Expression>>> expression
|
||||
%type <BisonWrap<Nonnull<const Declaration*>>> declaration
|
||||
%type <BisonWrap<Nonnull<const FunctionDefinition*>>> function_declaration
|
||||
%type <BisonWrap<Nonnull<const FunctionDefinition*>>> function_definition
|
||||
%type <std::vector<Nonnull<const Declaration*>>> declaration_list
|
||||
%type <BisonWrap<Nonnull<const Statement*>>> statement
|
||||
%type <BisonWrap<Nonnull<const Statement*>>> if_statement
|
||||
%type <std::optional<Nonnull<const Statement*>>> optional_else
|
||||
%type <BisonWrap<std::pair<Nonnull<const Expression*>, bool>>> return_expression
|
||||
%type <BisonWrap<Nonnull<const Statement*>>> block
|
||||
%type <std::optional<Nonnull<const Statement*>>> statement_list
|
||||
%type <BisonWrap<Nonnull<const Expression*>>> expression
|
||||
%type <BisonWrap<GenericBinding>> generic_binding
|
||||
%type <std::vector<GenericBinding>> deduced_params
|
||||
%type <std::vector<GenericBinding>> deduced_param_list
|
||||
%type <BisonWrap<Ptr<const Pattern>>> pattern
|
||||
%type <BisonWrap<Ptr<const Pattern>>> non_expression_pattern
|
||||
%type <BisonWrap<std::pair<Ptr<const Expression>, bool>>> return_type
|
||||
%type <BisonWrap<Ptr<const Expression>>> paren_expression
|
||||
%type <BisonWrap<Ptr<const Expression>>> tuple
|
||||
%type <BisonWrap<Nonnull<const Pattern*>>> pattern
|
||||
%type <BisonWrap<Nonnull<const Pattern*>>> non_expression_pattern
|
||||
%type <BisonWrap<std::pair<Nonnull<const Expression*>, bool>>> return_type
|
||||
%type <BisonWrap<Nonnull<const Expression*>>> paren_expression
|
||||
%type <BisonWrap<Nonnull<const Expression*>>> tuple
|
||||
%type <std::optional<std::string>> binding_lhs
|
||||
%type <BisonWrap<Ptr<const BindingPattern>>> variable_declaration
|
||||
%type <BisonWrap<Ptr<Member>>> member
|
||||
%type <std::vector<Ptr<Member>>> member_list
|
||||
%type <BisonWrap<Nonnull<const BindingPattern*>>> variable_declaration
|
||||
%type <BisonWrap<Nonnull<Member*>>> member
|
||||
%type <std::vector<Nonnull<Member*>>> member_list
|
||||
%type <BisonWrap<ParenContents<Expression>::Element>> paren_expression_element
|
||||
%type <ParenContents<Expression>> paren_expression_base
|
||||
%type <ParenContents<Expression>> paren_expression_contents
|
||||
%type <BisonWrap<Ptr<const Pattern>>> paren_pattern
|
||||
%type <BisonWrap<Ptr<const TuplePattern>>> tuple_pattern
|
||||
%type <BisonWrap<Ptr<const TuplePattern>>> maybe_empty_tuple_pattern
|
||||
%type <BisonWrap<Nonnull<const Pattern*>>> paren_pattern
|
||||
%type <BisonWrap<Nonnull<const TuplePattern*>>> tuple_pattern
|
||||
%type <BisonWrap<Nonnull<const TuplePattern*>>> maybe_empty_tuple_pattern
|
||||
%type <ParenContents<Pattern>> paren_pattern_base
|
||||
%type <BisonWrap<ParenContents<Pattern>::Element>> paren_pattern_element
|
||||
%type <ParenContents<Pattern>> paren_pattern_contents
|
||||
%type <BisonWrap<std::pair<std::string, Ptr<const Expression>>>> alternative
|
||||
%type <std::vector<std::pair<std::string, Ptr<const Expression>>>> alternative_list
|
||||
%type <std::vector<std::pair<std::string, Ptr<const Expression>>>> alternative_list_contents
|
||||
%type <BisonWrap<std::pair<Ptr<const Pattern>, Ptr<const Statement>>>> clause
|
||||
%type <std::vector<std::pair<Ptr<const Pattern>, Ptr<const Statement>>>> clause_list
|
||||
%type <BisonWrap<std::pair<std::string, Nonnull<const Expression*>>>> alternative
|
||||
%type <std::vector<std::pair<std::string, Nonnull<const Expression*>>>> alternative_list
|
||||
%type <std::vector<std::pair<std::string, Nonnull<const Expression*>>>> alternative_list_contents
|
||||
%type <BisonWrap<std::pair<Nonnull<const Pattern*>, Nonnull<const Statement*>>>> clause
|
||||
%type <std::vector<std::pair<Nonnull<const Pattern*>, Nonnull<const Statement*>>>> clause_list
|
||||
|
||||
%token
|
||||
// Most tokens have their spelling defined in lexer.lpp.
|
||||
@@ -303,61 +303,61 @@ expression:
|
||||
{
|
||||
$$ = arena->New<PrimitiveOperatorExpression>(
|
||||
context.SourceLoc(), Operator::Eq,
|
||||
std::vector<Ptr<const Expression>>({$1, $3}));
|
||||
std::vector<Nonnull<const Expression*>>({$1, $3}));
|
||||
}
|
||||
| expression PLUS expression
|
||||
{
|
||||
$$ = arena->New<PrimitiveOperatorExpression>(
|
||||
context.SourceLoc(), Operator::Add,
|
||||
std::vector<Ptr<const Expression>>({$1, $3}));
|
||||
std::vector<Nonnull<const Expression*>>({$1, $3}));
|
||||
}
|
||||
| expression MINUS expression
|
||||
{
|
||||
$$ = arena->New<PrimitiveOperatorExpression>(
|
||||
context.SourceLoc(), Operator::Sub,
|
||||
std::vector<Ptr<const Expression>>({$1, $3}));
|
||||
std::vector<Nonnull<const Expression*>>({$1, $3}));
|
||||
}
|
||||
| expression BINARY_STAR expression
|
||||
{
|
||||
$$ = arena->New<PrimitiveOperatorExpression>(
|
||||
context.SourceLoc(), Operator::Mul,
|
||||
std::vector<Ptr<const Expression>>({$1, $3}));
|
||||
std::vector<Nonnull<const Expression*>>({$1, $3}));
|
||||
}
|
||||
| expression AND expression
|
||||
{
|
||||
$$ = arena->New<PrimitiveOperatorExpression>(
|
||||
context.SourceLoc(), Operator::And,
|
||||
std::vector<Ptr<const Expression>>({$1, $3}));
|
||||
std::vector<Nonnull<const Expression*>>({$1, $3}));
|
||||
}
|
||||
| expression OR expression
|
||||
{
|
||||
$$ = arena->New<PrimitiveOperatorExpression>(
|
||||
context.SourceLoc(), Operator::Or,
|
||||
std::vector<Ptr<const Expression>>({$1, $3}));
|
||||
std::vector<Nonnull<const Expression*>>({$1, $3}));
|
||||
}
|
||||
| NOT expression
|
||||
{
|
||||
$$ = arena->New<PrimitiveOperatorExpression>(
|
||||
context.SourceLoc(), Operator::Not,
|
||||
std::vector<Ptr<const Expression>>({$2}));
|
||||
std::vector<Nonnull<const Expression*>>({$2}));
|
||||
}
|
||||
| MINUS expression %prec UNARY_MINUS
|
||||
{
|
||||
$$ = arena->New<PrimitiveOperatorExpression>(
|
||||
context.SourceLoc(), Operator::Neg,
|
||||
std::vector<Ptr<const Expression>>({$2}));
|
||||
std::vector<Nonnull<const Expression*>>({$2}));
|
||||
}
|
||||
| PREFIX_STAR expression
|
||||
{
|
||||
$$ = arena->New<PrimitiveOperatorExpression>(
|
||||
context.SourceLoc(), Operator::Deref,
|
||||
std::vector<Ptr<const Expression>>({$2}));
|
||||
std::vector<Nonnull<const Expression*>>({$2}));
|
||||
}
|
||||
| UNARY_STAR expression %prec PREFIX_STAR
|
||||
{
|
||||
$$ = arena->New<PrimitiveOperatorExpression>(
|
||||
context.SourceLoc(), Operator::Deref,
|
||||
std::vector<Ptr<const Expression>>({$2}));
|
||||
std::vector<Nonnull<const Expression*>>({$2}));
|
||||
}
|
||||
| expression tuple
|
||||
{ $$ = arena->New<CallExpression>(context.SourceLoc(), $1, $2); }
|
||||
@@ -365,13 +365,13 @@ expression:
|
||||
{
|
||||
$$ = arena->New<PrimitiveOperatorExpression>(
|
||||
context.SourceLoc(), Operator::Ptr,
|
||||
std::vector<Ptr<const Expression>>({$1}));
|
||||
std::vector<Nonnull<const Expression*>>({$1}));
|
||||
}
|
||||
| expression UNARY_STAR
|
||||
{
|
||||
$$ = arena->New<PrimitiveOperatorExpression>(
|
||||
context.SourceLoc(), Operator::Ptr,
|
||||
std::vector<Ptr<const Expression>>({$1}));
|
||||
std::vector<Nonnull<const Expression*>>({$1}));
|
||||
}
|
||||
| FNTY tuple return_type
|
||||
{
|
||||
@@ -502,13 +502,17 @@ maybe_empty_tuple_pattern:
|
||||
;
|
||||
clause:
|
||||
CASE pattern DOUBLE_ARROW statement
|
||||
{ $$ = std::pair<Ptr<const Pattern>, Ptr<const Statement>>($2, $4); }
|
||||
{
|
||||
$$ =
|
||||
std::pair<Nonnull<const Pattern*>, Nonnull<const Statement*>>($2, $4);
|
||||
}
|
||||
| DEFAULT DOUBLE_ARROW statement
|
||||
{
|
||||
auto vp = arena -> New<BindingPattern>(
|
||||
context.SourceLoc(), std::nullopt,
|
||||
arena->New<AutoPattern>(context.SourceLoc()));
|
||||
$$ = std::pair<Ptr<const Pattern>, Ptr<const Statement>>(vp, $3);
|
||||
$$ =
|
||||
std::pair<Nonnull<const Pattern*>, Nonnull<const Statement*>>(vp, $3);
|
||||
}
|
||||
;
|
||||
clause_list:
|
||||
@@ -656,10 +660,10 @@ member_list:
|
||||
;
|
||||
alternative:
|
||||
identifier tuple
|
||||
{ $$ = std::pair<std::string, Ptr<const Expression>>($1, $2); }
|
||||
{ $$ = std::pair<std::string, Nonnull<const Expression*>>($1, $2); }
|
||||
| identifier
|
||||
{
|
||||
$$ = std::pair<std::string, Ptr<const Expression>>(
|
||||
$$ = std::pair<std::string, Nonnull<const Expression*>>(
|
||||
$1, arena->New<TupleLiteral>(context.SourceLoc()));
|
||||
}
|
||||
;
|
||||
@@ -698,7 +702,7 @@ declaration_list:
|
||||
| declaration_list declaration
|
||||
{
|
||||
$$ = $1;
|
||||
$$.push_back(Ptr<const Declaration>($2));
|
||||
$$.push_back(Nonnull<const Declaration*>($2));
|
||||
}
|
||||
;
|
||||
%%
|
||||
|
||||
Reference in New Issue
Block a user