diff options
author | vitya-smirnov <[email protected]> | 2025-06-17 12:44:39 +0300 |
---|---|---|
committer | vitya-smirnov <[email protected]> | 2025-06-17 13:00:42 +0300 |
commit | bacec6cbd87d14bf55c256f17797537ae8c2bbed (patch) | |
tree | 0e4cfe7c9e0fe96ff92a084d9a5ba75006137c9b /yql/essentials/sql/v1/complete/analysis/local/parser_call_stack.cpp | |
parent | 73c773ee1bd8078646b72379ffe7626101c8cb56 (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.cpp | 8 |
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) { |