Skip to content

Commit 8f94422

Browse files
committed
Default column names
1 parent 22bc617 commit 8f94422

3 files changed

Lines changed: 7 additions & 21 deletions

File tree

Sources/Compiler/Diagnostic.swift

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -101,14 +101,6 @@ extension Diagnostic {
101101
)
102102
}
103103

104-
static func nameRequired(at location: SourceLocation) -> Diagnostic {
105-
return Diagnostic(
106-
"Name required, add via 'AS'",
107-
at: location,
108-
suggestion: .append("AS \(Diagnostic.placeholder(name: "name"))")
109-
)
110-
}
111-
112104
static func unexpectedToken(
113105
of kind: Token.Kind,
114106
expected: Token.Kind? = nil,

Sources/Compiler/Schema.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ extension Columns {
3838
/// Initializes the columns with their default names that SQLite gives to them.
3939
init(withDefaultNames types: [Type]) {
4040
self = types.enumerated()
41-
.reduce(into: [:]) { c, v in c["column\(v.offset)"] = v.element }
41+
.reduce(into: [:]) { c, v in c["column\(v.offset + 1)"] = v.element }
4242
}
4343
}
4444

Sources/Compiler/Sema/StmtTypeChecker.swift

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -530,15 +530,12 @@ extension StmtTypeChecker {
530530
) -> ResultColumns {
531531
var resultColumns: Columns = [:]
532532

533-
for value in returningClause.values {
533+
for (offset, value) in returningClause.values.enumerated() {
534534
switch value {
535535
case let .expr(expr, alias):
536536
let (type, names) = typeCheck(expr)
537537

538-
guard let name = alias?.identifier.value ?? names.proposedName else {
539-
diagnostics.add(.nameRequired(at: expr.location))
540-
continue
541-
}
538+
let name = alias?.identifier.value ?? names.proposedName ?? "column\(offset + 1)"
542539

543540
resultColumns[name] = type
544541
case .all:
@@ -696,17 +693,14 @@ extension StmtTypeChecker {
696693
table = nil
697694
}
698695

699-
for resultColumn in resultColumns {
696+
for (offset, resultColumn) in resultColumns.enumerated() {
700697
switch resultColumn.kind {
701698
case let .expr(expr, alias):
702699
let (type, names) = typeCheck(expr)
700+
let name = alias?.identifier.value ?? names.proposedName ?? "column\(offset + 1)"
703701

704-
if let name = alias?.identifier.value ?? names.proposedName {
705-
columns[name] = type
706-
nameInferrer.suggest(name: name, for: names)
707-
} else {
708-
diagnostics.add(.nameRequired(at: expr.location))
709-
}
702+
columns[name] = type
703+
nameInferrer.suggest(name: name, for: names)
710704

711705
// We selected a single column, so clear out the table
712706
// since its not a select all of a table.

0 commit comments

Comments
 (0)