mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
[CodeCompletion] Fix an assertion violation. rdar://23306548
When creating a SequenceExpr, we should always have an odd number of elements.
This commit is contained in:
@@ -899,6 +899,7 @@ bool OverloadSetRefExpr::hasBaseObject() const {
|
||||
}
|
||||
|
||||
SequenceExpr *SequenceExpr::create(ASTContext &ctx, ArrayRef<Expr*> elements) {
|
||||
assert(elements.size() & 1 && "even number of elements in sequence");
|
||||
void *Buffer = ctx.Allocate(sizeof(SequenceExpr) +
|
||||
elements.size() * sizeof(Expr*),
|
||||
alignof(SequenceExpr));
|
||||
|
||||
@@ -291,6 +291,10 @@ parse_operator:
|
||||
CodeCompletion->completeAssignmentRHS(assign);
|
||||
}
|
||||
consumeToken();
|
||||
if (SequencedExprs.size() > 0 && (SequencedExprs.size() & 1) == 0) {
|
||||
// Make sure we have odd number of sequence exprs.
|
||||
SequencedExprs.pop_back();
|
||||
}
|
||||
auto Result = SequencedExprs.size() == 1 ?
|
||||
makeParserResult(SequencedExprs[0]):
|
||||
makeParserResult(SequenceExpr::create(Context, SequencedExprs));
|
||||
|
||||
8
test/SourceKit/CodeComplete/complete_crash1.swift
Normal file
8
test/SourceKit/CodeComplete/complete_crash1.swift
Normal file
@@ -0,0 +1,8 @@
|
||||
// RUN: %complete-test -tok=TOK1 -hide-none %s -- %s
|
||||
|
||||
import QuartzCore
|
||||
|
||||
class Cl{
|
||||
var L : CALayer = {
|
||||
let layer = CALayer()
|
||||
layer.transform = #^TOK1^#
|
||||
Reference in New Issue
Block a user