From dcb4e42791ed7ce1c366d59377e65d7c1c25df48 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Mon, 2 Nov 2026 18:39:55 +0000 Subject: Handle no fields in SqlGenerator --- .../compiler/output/generators/sql/SqlGenerator.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/sql/SqlGenerator.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/sql/SqlGenerator.java index 456ffd8..4a23fa1 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/sql/SqlGenerator.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/sql/SqlGenerator.java @@ -5,6 +5,7 @@ import org.zwobble.hobgoblin.compiler.ast.typed.RelationTable; import org.zwobble.hobgoblin.compiler.ast.typed.TypedQueryDefinitionNode; import org.zwobble.hobgoblin.compiler.ast.typed.TypedTableDefinitionNode; import org.zwobble.hobgoblin.compiler.builtins.NativeTypes; +import org.zwobble.hobgoblin.compiler.errors.InternalError; import org.zwobble.hobgoblin.compiler.output.lang.sql.ast.*; import org.zwobble.hobgoblin.compiler.typechecker.TypesInfo; import org.zwobble.hobgoblin.compiler.types.SimpleStructType; @@ -66,8 +67,16 @@ public class SqlGenerator { var table = relationTable.table(); var schemaInfo = typesInfo.databaseSchemaInfo(table.databaseSchema()); var tableInfo = schemaInfo.tables().get(table.name()); - // TODO: handle singleton struct. - var fields = typesInfo.fieldsOf(tableInfo.rowType()).orElseThrow(); + + var fields = typesInfo.fieldsOf(tableInfo.rowType()) + .orElse(List.of()); + + // The type-checker should have verified that the row type has + // fields, so don't try to handle gracefully here. + if (fields.isEmpty()) { + throw new InternalError("row type has no fields"); + } + var columns = fields.stream() .map(field -> { var columnName = generateColumnName(field.name()); -- cgit v1.2.3