Skip to content

Commit 3906727

Browse files
committed
---
yaml --- r: 348718 b: refs/heads/master c: 0264687 h: refs/heads/master
1 parent 8eb2163 commit 3906727

File tree

4 files changed

+70
-62
lines changed

4 files changed

+70
-62
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: de0f000eba7253fe6f29d8a48b2ad9de24cccdb5
2+
refs/heads/master: 0264687b394632ccf4e921fe65bee6c651729b45
33
refs/heads/master-next: 203b3026584ecad859eb328b2e12490099409cd5
44
refs/tags/osx-passed: b6b74147ef8a386f532cf9357a1bde006e552c54
55
refs/tags/swift-2.2-SNAPSHOT-2015-12-01-a: 6bb18e013c2284f2b45f5f84f2df2887dc0f7dea

trunk/include/swift/Parse/Parser.h

Lines changed: 33 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1179,41 +1179,47 @@ class Parser {
11791179
//===--------------------------------------------------------------------===//
11801180
// Type Parsing
11811181

1182-
using TypeASTResult = ParserResult<TypeRepr>;
1183-
using TypeResult = ParsedSyntaxResult<ParsedTypeSyntax>;
1182+
ParserResult<TypeRepr> parseType();
1183+
ParserResult<TypeRepr> parseType(Diag<> MessageID,
1184+
bool HandleCodeCompletion = true,
1185+
bool IsSILFuncDecl = false);
1186+
ParserStatus parseGenericArguments(llvm::SmallVectorImpl<TypeRepr *> &ArgsAST,
1187+
SourceLoc &LAngleLoc,
1188+
SourceLoc &RAngleLoc);
1189+
TypeRepr *applyAttributeToType(TypeRepr *Ty, const TypeAttributes &Attr,
1190+
ParamDecl::Specifier Specifier,
1191+
SourceLoc SpecifierLoc);
1192+
ParserResult<TypeRepr> parseAnyTypeAST();
11841193

11851194
ParsedSyntaxResult<ParsedLayoutConstraintSyntax>
11861195
parseLayoutConstraintSyntax();
11871196

1188-
TypeResult parseTypeSyntax();
1189-
TypeResult parseTypeSyntax(Diag<> MessageID, bool HandleCodeCompletion = true,
1190-
bool IsSILFuncDecl = false);
1191-
1192-
TypeASTResult parseType();
1193-
TypeASTResult parseType(Diag<> MessageID, bool HandleCodeCompletion = true,
1194-
bool IsSILFuncDecl = false);
1195-
ParserStatus
1196-
parseGenericArgumentsAST(llvm::SmallVectorImpl<TypeRepr *> &ArgsAST,
1197-
SourceLoc &LAngleLoc, SourceLoc &RAngleLoc);
1198-
TypeResult parseSILBoxTypeSyntax(
1199-
Optional<ParsedGenericParameterClauseListSyntax> genericParams);
1200-
TypeASTResult parseAnyTypeAST();
1197+
ParsedSyntaxResult<ParsedTypeSyntax> parseTypeSyntax();
1198+
ParsedSyntaxResult<ParsedTypeSyntax>
1199+
parseTypeSyntax(Diag<> MessageID, bool HandleCodeCompletion = true,
1200+
bool IsSILFuncDecl = false);
12011201

12021202
ParsedSyntaxResult<ParsedGenericArgumentClauseSyntax>
12031203
parseGenericArgumentClauseSyntax();
12041204

1205-
TypeResult parseTypeSimple(Diag<> MessageID, bool HandleCodeCompletion);
1206-
TypeResult parseTypeSimpleOrComposition(Diag<> MessageID, bool HandleCodeCompletion);
1207-
TypeResult parseTypeIdentifier();
1208-
TypeResult parseAnyType();
1209-
TypeResult parseTypeTupleBody();
1210-
TypeResult parseTypeCollection();
1211-
TypeResult parseMetatypeType(ParsedTypeSyntax Base);
1212-
TypeResult parseOptionalType(ParsedTypeSyntax Base);
1213-
TypeResult parseImplicitlyUnwrappedOptionalType(ParsedTypeSyntax Base);
1205+
ParsedSyntaxResult<ParsedTypeSyntax>
1206+
parseTypeSimple(Diag<> MessageID, bool HandleCodeCompletion);
1207+
ParsedSyntaxResult<ParsedTypeSyntax>
1208+
parseTypeSimpleOrComposition(Diag<> MessageID, bool HandleCodeCompletion);
1209+
ParsedSyntaxResult<ParsedTypeSyntax> parseTypeIdentifier();
1210+
ParsedSyntaxResult<ParsedTypeSyntax> parseAnyType();
1211+
ParsedSyntaxResult<ParsedTypeSyntax> parseTypeTupleBody();
1212+
ParsedSyntaxResult<ParsedTypeSyntax> parseTypeCollection();
1213+
ParsedSyntaxResult<ParsedTypeSyntax> parseMetatypeType(ParsedTypeSyntax Base);
1214+
ParsedSyntaxResult<ParsedTypeSyntax> parseOptionalType(ParsedTypeSyntax Base);
1215+
ParsedSyntaxResult<ParsedTypeSyntax>
1216+
parseImplicitlyUnwrappedOptionalType(ParsedTypeSyntax Base);
1217+
ParsedSyntaxResult<ParsedTypeSyntax> parseSILBoxTypeSyntax(
1218+
Optional<ParsedGenericParameterClauseListSyntax> genericParams);
12141219

1215-
TypeResult parseTypeArray(ParsedTypeSyntax Base, SourceLoc BaseLoc);
1216-
TypeResult parseOldStyleProtocolComposition();
1220+
ParsedSyntaxResult<ParsedTypeSyntax> parseTypeArray(ParsedTypeSyntax Base,
1221+
SourceLoc BaseLoc);
1222+
ParsedSyntaxResult<ParsedTypeSyntax> parseOldStyleProtocolComposition();
12171223

12181224
bool isOptionalToken(const Token &T) const;
12191225
ParsedTokenSyntax consumeOptionalTokenSyntax();
@@ -1223,13 +1229,11 @@ class Parser {
12231229
ParsedTokenSyntax consumeImplicitlyUnwrappedOptionalTokenSyntax();
12241230
SourceLoc consumeImplicitlyUnwrappedOptionalToken();
12251231

1226-
TypeRepr *applyAttributeToType(TypeRepr *Ty, const TypeAttributes &Attr,
1227-
ParamDecl::Specifier Specifier,
1228-
SourceLoc SpecifierLoc);
12291232
ParsedSyntaxResult<ParsedTypeSyntax>
12301233
applyAttributeToTypeSyntax(ParsedSyntaxResult<ParsedTypeSyntax> &&ty,
12311234
Optional<ParsedTokenSyntax> specifier,
12321235
Optional<ParsedAttributeListSyntax> attrs);
1236+
12331237
//===--------------------------------------------------------------------===//
12341238
// Pattern Parsing
12351239

trunk/lib/Parse/ParseExpr.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1081,7 +1081,7 @@ Parser::parseExprPostfixSuffix(ParserResult<Expr> Result, bool isExprBasic,
10811081
if (canParseAsGenericArgumentList()) {
10821082
SmallVector<TypeRepr *, 8> args;
10831083
SourceLoc LAngleLoc, RAngleLoc;
1084-
auto argStat = parseGenericArgumentsAST(args, LAngleLoc, RAngleLoc);
1084+
auto argStat = parseGenericArguments(args, LAngleLoc, RAngleLoc);
10851085
if (argStat.isError())
10861086
diagnose(LAngleLoc, diag::while_parsing_as_left_angle_bracket);
10871087

@@ -2209,7 +2209,7 @@ Expr *Parser::parseExprIdentifier() {
22092209
if (canParseAsGenericArgumentList()) {
22102210
SyntaxContext->createNodeInPlace(SyntaxKind::IdentifierExpr);
22112211
SyntaxContext->setCreateSyntax(SyntaxKind::SpecializeExpr);
2212-
auto argStat = parseGenericArgumentsAST(args, LAngleLoc, RAngleLoc);
2212+
auto argStat = parseGenericArguments(args, LAngleLoc, RAngleLoc);
22132213
if (argStat.isError())
22142214
diagnose(LAngleLoc, diag::while_parsing_as_left_angle_bracket);
22152215

trunk/lib/Parse/ParseType.cpp

Lines changed: 34 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -157,8 +157,8 @@ Parser::parseLayoutConstraintSyntax() {
157157
/// type-simple '!'
158158
/// type-collection
159159
/// type-array
160-
Parser::TypeResult Parser::parseTypeSimple(Diag<> MessageID,
161-
bool HandleCodeCompletion) {
160+
ParsedSyntaxResult<ParsedTypeSyntax>
161+
Parser::parseTypeSimple(Diag<> MessageID, bool HandleCodeCompletion) {
162162
if (Tok.is(tok::kw_inout) ||
163163
(Tok.is(tok::identifier) && (Tok.getRawText().equals("__shared") ||
164164
Tok.getRawText().equals("__owned")))) {
@@ -170,7 +170,7 @@ Parser::TypeResult Parser::parseTypeSimple(Diag<> MessageID,
170170

171171
auto TypeLoc = leadingTriviaLoc();
172172

173-
TypeResult Result;
173+
ParsedSyntaxResult<ParsedTypeSyntax> Result;
174174
switch (Tok.getKind()) {
175175
case tok::kw_Self:
176176
case tok::kw_Any:
@@ -251,14 +251,6 @@ Parser::TypeResult Parser::parseTypeSimple(Diag<> MessageID,
251251
return Result;
252252
}
253253

254-
ParsedSyntaxResult<ParsedTypeSyntax> Parser::parseTypeSyntax() {
255-
return parseTypeSyntax(diag::expected_type);
256-
}
257-
258-
Parser::TypeASTResult Parser::parseType() {
259-
return parseType(diag::expected_type);
260-
}
261-
262254
ParsedSyntaxResult<ParsedTypeSyntax> Parser::parseSILBoxTypeSyntax(
263255
Optional<ParsedGenericParameterClauseListSyntax> generics) {
264256
ParsedSILBoxTypeSyntaxBuilder builder(*SyntaxContext);
@@ -331,9 +323,9 @@ ParsedSyntaxResult<ParsedTypeSyntax> Parser::parseSILBoxTypeSyntax(
331323
///
332324
/// sil-generic-function-type:
333325
/// generic-parameter-clause-list type-function
334-
Parser::TypeResult Parser::parseTypeSyntax(Diag<> MessageID,
335-
bool HandleCodeCompletion,
336-
bool IsSILFuncDecl) {
326+
ParsedSyntaxResult<ParsedTypeSyntax>
327+
Parser::parseTypeSyntax(Diag<> MessageID, bool HandleCodeCompletion,
328+
bool IsSILFuncDecl) {
337329
ParserStatus status;
338330

339331
// Parse attributes.
@@ -472,6 +464,10 @@ Parser::TypeResult Parser::parseTypeSyntax(Diag<> MessageID,
472464
std::move(specifier), std::move(attrs));
473465
}
474466

467+
ParsedSyntaxResult<ParsedTypeSyntax> Parser::parseTypeSyntax() {
468+
return parseTypeSyntax(diag::expected_type);
469+
}
470+
475471
ParserResult<TypeRepr> Parser::parseType(Diag<> MessageID,
476472
bool HandleCodeCompletion,
477473
bool IsSILFuncDecl) {
@@ -489,7 +485,12 @@ ParserResult<TypeRepr> Parser::parseType(Diag<> MessageID,
489485
return makeParserResult(status, tyR);
490486
}
491487

492-
Parser::TypeASTResult Parser::parseDeclResultType(Diag<> MessageID) {
488+
ParserResult<TypeRepr> Parser::parseType() {
489+
return parseType(diag::expected_type);
490+
}
491+
492+
493+
ParserResult<TypeRepr> Parser::parseDeclResultType(Diag<> MessageID) {
493494
if (Tok.is(tok::code_complete)) {
494495
if (CodeCompletion)
495496
CodeCompletion->completeTypeDeclResultBeginning();
@@ -575,9 +576,9 @@ Parser::parseGenericArgumentClauseSyntax() {
575576
return makeParsedResult(builder.build(), status);
576577
}
577578

578-
ParserStatus
579-
Parser::parseGenericArgumentsAST(SmallVectorImpl<TypeRepr *> &ArgsAST,
580-
SourceLoc &LAngleLoc, SourceLoc &RAngleLoc) {
579+
ParserStatus Parser::parseGenericArguments(SmallVectorImpl<TypeRepr *> &ArgsAST,
580+
SourceLoc &LAngleLoc,
581+
SourceLoc &RAngleLoc) {
581582
auto StartLoc = leadingTriviaLoc();
582583
auto ParsedClauseResult = parseGenericArgumentClauseSyntax();
583584
if (ParsedClauseResult.isNull())
@@ -600,7 +601,7 @@ Parser::parseGenericArgumentsAST(SmallVectorImpl<TypeRepr *> &ArgsAST,
600601
/// type-identifier:
601602
/// identifier generic-args? ('.' identifier generic-args?)*
602603
///
603-
Parser::TypeResult Parser::parseTypeIdentifier() {
604+
ParsedSyntaxResult<ParsedTypeSyntax> Parser::parseTypeIdentifier() {
604605
if (Tok.isNot(tok::identifier) && Tok.isNot(tok::kw_Self)) {
605606
// is this the 'Any' type
606607
if (Tok.is(tok::kw_Any))
@@ -741,7 +742,7 @@ Parser::TypeResult Parser::parseTypeIdentifier() {
741742
/// type-composition:
742743
/// 'some'? type-simple
743744
/// type-composition '&' type-simple
744-
Parser::TypeResult
745+
ParsedSyntaxResult<ParsedTypeSyntax>
745746
Parser::parseTypeSimpleOrComposition(Diag<> MessageID,
746747
bool HandleCodeCompletion) {
747748
// Check for the opaque modifier.
@@ -829,15 +830,15 @@ Parser::parseTypeSimpleOrComposition(Diag<> MessageID,
829830
ApplySome(std::move(Composition), std::move(FirstSome)), Status);
830831
}
831832

832-
Parser::TypeASTResult Parser::parseAnyTypeAST() {
833+
ParserResult<TypeRepr> Parser::parseAnyTypeAST() {
833834
auto AnyLoc = leadingTriviaLoc();
834835
auto ParsedAny = parseAnyType().get();
835836
SyntaxContext->addSyntax(std::move(ParsedAny));
836837
auto Any = SyntaxContext->topNode<SimpleTypeIdentifierSyntax>();
837838
return makeParserResult(Generator.generate(Any, AnyLoc));
838839
}
839840

840-
Parser::TypeResult Parser::parseAnyType() {
841+
ParsedSyntaxResult<ParsedTypeSyntax> Parser::parseAnyType() {
841842
auto Any = consumeTokenSyntax(tok::kw_Any);
842843
auto Type = ParsedSyntaxRecorder::makeSimpleTypeIdentifier(
843844
std::move(Any), llvm::None, *SyntaxContext);
@@ -852,7 +853,8 @@ Parser::TypeResult Parser::parseAnyType() {
852853
/// type-composition-list-deprecated:
853854
/// type-identifier
854855
/// type-composition-list-deprecated ',' type-identifier
855-
Parser::TypeResult Parser::parseOldStyleProtocolComposition() {
856+
ParsedSyntaxResult<ParsedTypeSyntax>
857+
Parser::parseOldStyleProtocolComposition() {
856858
// Defer all nodes so that we can de-structure the composed types in case we
857859
// need to emit a diagnostic (below).
858860
DeferringContextRAII Deferring(*SyntaxContext);
@@ -968,7 +970,7 @@ Parser::TypeResult Parser::parseOldStyleProtocolComposition() {
968970
/// type-tuple-element:
969971
/// identifier? identifier ':' type
970972
/// type
971-
Parser::TypeResult Parser::parseTypeTupleBody() {
973+
ParsedSyntaxResult<ParsedTypeSyntax> Parser::parseTypeTupleBody() {
972974
// Force the context to create deferred nodes, as we might need to
973975
// de-structure the tuple type to create a function type.
974976
DeferringContextRAII Deferring(*SyntaxContext);
@@ -1227,8 +1229,8 @@ Parser::TypeResult Parser::parseTypeTupleBody() {
12271229
/// type-array '[' ']'
12281230
/// type-array '[' expr ']'
12291231
///
1230-
Parser::TypeResult Parser::parseTypeArray(ParsedTypeSyntax Base,
1231-
SourceLoc BaseLoc) {
1232+
ParsedSyntaxResult<ParsedTypeSyntax>
1233+
Parser::parseTypeArray(ParsedTypeSyntax Base, SourceLoc BaseLoc) {
12321234
assert(Tok.isFollowingLSquare());
12331235
auto LSquareLoc = Tok.getLoc();
12341236
ignoreToken(tok::l_square);
@@ -1265,7 +1267,7 @@ Parser::TypeResult Parser::parseTypeArray(ParsedTypeSyntax Base,
12651267
/// type-simple:
12661268
/// '[' type ']'
12671269
/// '[' type ':' type ']'
1268-
Parser::TypeResult Parser::parseTypeCollection() {
1270+
ParsedSyntaxResult<ParsedTypeSyntax> Parser::parseTypeCollection() {
12691271
ParserStatus Status;
12701272
assert(Tok.is(tok::l_square));
12711273
Parser::StructureMarkerRAII parsingCollection(*this, Tok);
@@ -1322,7 +1324,8 @@ Parser::TypeResult Parser::parseTypeCollection() {
13221324
*SyntaxContext));
13231325
}
13241326

1325-
Parser::TypeResult Parser::parseMetatypeType(ParsedTypeSyntax Base) {
1327+
ParsedSyntaxResult<ParsedTypeSyntax>
1328+
Parser::parseMetatypeType(ParsedTypeSyntax Base) {
13261329
auto Period = consumeTokenSyntax(); // tok::period or tok::period_prefix
13271330
auto Keyword = consumeTokenSyntax(tok::identifier); // "Type" or "Protocol"
13281331
auto MetatypeType = ParsedSyntaxRecorder::makeMetatypeType(
@@ -1381,14 +1384,15 @@ SourceLoc Parser::consumeImplicitlyUnwrappedOptionalToken() {
13811384
return consumeStartingCharacterOfCurrentToken(tok::exclaim_postfix);
13821385
}
13831386

1384-
Parser::TypeResult Parser::parseOptionalType(ParsedTypeSyntax Base) {
1387+
ParsedSyntaxResult<ParsedTypeSyntax>
1388+
Parser::parseOptionalType(ParsedTypeSyntax Base) {
13851389
auto Question = consumeOptionalTokenSyntax();
13861390
auto Optional = ParsedSyntaxRecorder::makeOptionalType(
13871391
std::move(Base), std::move(Question), *SyntaxContext);
13881392
return makeParsedResult(std::move(Optional));
13891393
}
13901394

1391-
Parser::TypeResult
1395+
ParsedSyntaxResult<ParsedTypeSyntax>
13921396
Parser::parseImplicitlyUnwrappedOptionalType(ParsedTypeSyntax Base) {
13931397
auto Exclamation = consumeImplicitlyUnwrappedOptionalTokenSyntax();
13941398
auto Unwrapped = ParsedSyntaxRecorder::makeImplicitlyUnwrappedOptionalType(

0 commit comments

Comments
 (0)