From f3cf63b90bbaad6cde27f8eccf74c9bfca06b239 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93lafur=20P=C3=A1ll=20Geirsson?= Date: Wed, 11 Aug 2021 14:59:36 +0200 Subject: [PATCH] Handle null/unit constant types. Previously, the snapshot-lsif command failed when encountering these types. --- .../lsif_semanticdb/SignatureFormatter.java | 6 +++++- semanticdb-java/src/main/protobuf/semanticdb.proto | 10 +++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/lsif-semanticdb/src/main/java/com/sourcegraph/lsif_semanticdb/SignatureFormatter.java b/lsif-semanticdb/src/main/java/com/sourcegraph/lsif_semanticdb/SignatureFormatter.java index 3112152e8..72050b90e 100644 --- a/lsif-semanticdb/src/main/java/com/sourcegraph/lsif_semanticdb/SignatureFormatter.java +++ b/lsif-semanticdb/src/main/java/com/sourcegraph/lsif_semanticdb/SignatureFormatter.java @@ -472,7 +472,9 @@ private String formatTree(Tree tree) { } private String formatConstant(Constant constant) { - if (constant.hasBooleanConstant()) { + if (constant.hasUnitConstant()) { + return isScala ? "()" : "scala.Unit()"; + } else if (constant.hasBooleanConstant()) { return Boolean.toString(constant.getBooleanConstant().getValue()); } else if (constant.hasByteConstant()) { return Integer.toString(constant.getByteConstant().getValue()); @@ -490,6 +492,8 @@ private String formatConstant(Constant constant) { return Double.toString(constant.getDoubleConstant().getValue()); } else if (constant.hasStringConstant()) { return '"' + constant.getStringConstant().getValue() + '"'; + } else if (constant.hasNullConstant()) { + return "null"; } throw new IllegalArgumentException("constant was not of known type " + constant); } diff --git a/semanticdb-java/src/main/protobuf/semanticdb.proto b/semanticdb-java/src/main/protobuf/semanticdb.proto index 80b71ad9b..35e52053d 100644 --- a/semanticdb-java/src/main/protobuf/semanticdb.proto +++ b/semanticdb-java/src/main/protobuf/semanticdb.proto @@ -346,6 +346,7 @@ enum BinaryOperator { message Constant { oneof sealed_value { + UnitConstant unit_constant = 1; BooleanConstant boolean_constant = 2; ByteConstant byte_constant = 3; ShortConstant short_constant = 4; @@ -355,9 +356,13 @@ message Constant { FloatConstant float_constant = 8; DoubleConstant double_constant = 9; StringConstant string_constant = 10; + NullConstant null_constant = 11; } } +message UnitConstant { +} + message BooleanConstant { bool value = 1; } @@ -392,4 +397,7 @@ message DoubleConstant { message StringConstant { string value = 1; -} \ No newline at end of file +} + +message NullConstant { +}