summaryrefslogtreecommitdiffstats
path: root/yql/essentials/sql/v1/complete/analysis/local/parser_call_stack.cpp
diff options
context:
space:
mode:
authorvitya-smirnov <[email protected]>2025-06-17 12:44:39 +0300
committervitya-smirnov <[email protected]>2025-06-17 13:00:42 +0300
commitbacec6cbd87d14bf55c256f17797537ae8c2bbed (patch)
tree0e4cfe7c9e0fe96ff92a084d9a5ba75006137c9b /yql/essentials/sql/v1/complete/analysis/local/parser_call_stack.cpp
parent73c773ee1bd8078646b72379ffe7626101c8cb56 (diff)
YQL-19747: Improve types completion
Instead of relying on keyword sequences provided by C3 and using hacks like pattern matching on keyword sequences (`format.cpp`), emit composite types manually. commit_hash:999d8d4b514433fbdf7885aa0122b2010e985efb
Diffstat (limited to 'yql/essentials/sql/v1/complete/analysis/local/parser_call_stack.cpp')
-rw-r--r--yql/essentials/sql/v1/complete/analysis/local/parser_call_stack.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/yql/essentials/sql/v1/complete/analysis/local/parser_call_stack.cpp b/yql/essentials/sql/v1/complete/analysis/local/parser_call_stack.cpp
index 293cb333d5c..9837e404bd6 100644
--- a/yql/essentials/sql/v1/complete/analysis/local/parser_call_stack.cpp
+++ b/yql/essentials/sql/v1/complete/analysis/local/parser_call_stack.cpp
@@ -33,6 +33,9 @@ namespace NSQLComplete {
RULE(Id_hint),
RULE(Opt_id_prefix_or_type),
RULE(Type_name_simple),
+ RULE(Type_name_composite),
+ RULE(Type_name_decimal),
+ RULE(Value_constructor),
};
TVector<std::string> Symbolized(const TParserCallStack& stack) {
@@ -69,6 +72,8 @@ namespace NSQLComplete {
bool IsLikelyTypeStack(const TParserCallStack& stack) {
return EndsWith({RULE(Type_name_simple)}, stack) ||
+ EndsWith({RULE(Type_name_composite)}, stack) ||
+ EndsWith({RULE(Type_name_decimal)}, stack) ||
(Contains({RULE(Invoke_expr),
RULE(Named_expr_list),
RULE(Named_expr),
@@ -89,7 +94,8 @@ namespace NSQLComplete {
RULE(Atom_expr),
RULE(Bind_parameter),
RULE(An_id_or_type)}, stack) ||
- EndsWith({RULE(Atom_expr), RULE(Id_or_type)}, stack);
+ EndsWith({RULE(Atom_expr), RULE(Id_or_type)}, stack) ||
+ EndsWith({RULE(Value_constructor)}, stack);
}
bool IsLikelyHintStack(const TParserCallStack& stack) {