mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
AsyncSequence and protocol conformance rethrows (#35224)
* Initial draft of async sequences * Adjust AsyncSequence associated type requirements * Add a draft implementation of AsyncSequence and associated functionality * Correct merge damage and rename from GeneratorProtocol to AsyncIteratorProtocol * Add AsyncSequence types to the cmake lists * Add cancellation support * [DRAFT] Implementation of protocol conformance rethrowing * Account for ASTVerifier passes to ensure throwing and by conformance rethrowing verifies appropriately * Remove commented out code * OtherConstructorDeclRefExpr can also be a source of a rethrowing kind function * Re-order the checkApply logic to account for existing throwing calculations better * Extract rethrowing calculation into smaller functions * Allow for closures and protocol conformances to contribute to throwing * Add unit tests for conformance based rethrowing * Restrict rethrowing requirements to only protocols marked with @rethrows * Correct logic for gating of `@rethrows` and adjust the determinates to be based upon throws and not rethrows spelling * Attempt to unify the async sequence features together * Reorder try await to latest syntax * revert back to the inout diagnosis * House mutations in local scope * Revert "House mutations in local scope" This reverts commit d91f1b25b59fff8e4be107c808895ff3f293b394. * Adjust for inout diagnostics and fall back to original mutation strategy * Convert async flag to source locations and add initial try support to for await in syntax * Fix case typo of MinMax.swift * Adjust rethrowing tests to account for changes associated with @rethrows * Allow parsing and diagnostics associated with try applied to for await in syntax * Correct the code-completion for @rethrows * Additional corrections for the code-completion for @rethrows this time for the last in the list * Handle throwing cases of iteration of async sequences * restore building XCTest * First wave of feedback fixes * Rework constraints checking for async sequence for-try-await-in checking * Allow testing of for-await-in parsing and silgen testing and add unit tests for both * Remove async sequence operators for now * Back out cancellation of AsyncIteratorProtocols * Restructure protocol conformance throws checking and cache results * remove some stray whitespaces * Correct some merge damage * Ensure the throwing determinate for applying for-await-in always has a valid value and adjust the for-await-in silgen test to reflect the cancel changes * Squelch the python linter for line length
This commit is contained in:
@@ -74,7 +74,8 @@ STMT_NODES = [
|
||||
Child('GuardResult', kind='Expr'),
|
||||
]),
|
||||
|
||||
# for-in-stmt -> label? ':'? 'for' 'case'? pattern 'in' expr 'where'?
|
||||
# for-in-stmt -> label? ':'?
|
||||
# 'for' 'try'? 'await'? 'case'? pattern 'in' expr 'where'?
|
||||
# expr code-block ';'?
|
||||
Node('ForInStmt', kind='Stmt',
|
||||
traits=['WithCodeBlock', 'Labeled'],
|
||||
@@ -84,6 +85,11 @@ STMT_NODES = [
|
||||
Child('LabelColon', kind='ColonToken',
|
||||
is_optional=True),
|
||||
Child('ForKeyword', kind='ForToken'),
|
||||
Child('TryKeyword', kind='TryToken',
|
||||
is_optional=True),
|
||||
Child('AwaitKeyword', kind='IdentifierToken',
|
||||
classification='Keyword',
|
||||
text_choices=['await'], is_optional=True),
|
||||
Child('CaseKeyword', kind='CaseToken',
|
||||
is_optional=True),
|
||||
Child('Pattern', kind='Pattern'),
|
||||
|
||||
Reference in New Issue
Block a user