diff options
author | vvvv <vvvv@yandex-team.com> | 2025-02-25 10:14:46 +0300 |
---|---|---|
committer | vvvv <vvvv@yandex-team.com> | 2025-02-25 10:32:42 +0300 |
commit | dda9be9e1fde150b4473d9d10ec1a0d3829f7482 (patch) | |
tree | bc54250eaed354ffb43f2032fa7f6b0f943fc573 | |
parent | 417d06292092cc279f26f51a2db2d8e53ad1ea96 (diff) | |
download | ydb-dda9be9e1fde150b4473d9d10ec1a0d3829f7482.tar.gz |
YQL-19626 reexport of symbols, better issues from libraries
commit_hash:051b3854a032e0f7803ad23c03dfbf7f71590cc2
-rw-r--r-- | yql/essentials/core/yql_type_annotation.cpp | 23 | ||||
-rw-r--r-- | yql/essentials/sql/v1/context.cpp | 4 | ||||
-rw-r--r-- | yql/essentials/tests/sql/suites/library/lib1.sql.txt | 4 |
3 files changed, 17 insertions, 14 deletions
diff --git a/yql/essentials/core/yql_type_annotation.cpp b/yql/essentials/core/yql_type_annotation.cpp index 943267ae46..8934949d3f 100644 --- a/yql/essentials/core/yql_type_annotation.cpp +++ b/yql/essentials/core/yql_type_annotation.cpp @@ -504,9 +504,9 @@ bool TModuleResolver::AddFromMemory(const TString& fullName, const TString& modu QContext.GetWriter()->Put({ModuleResolverComponent, fullName}, query).GetValueSync(); } - const auto addSubIssues = [&fullName](TIssue&& issue, const TIssues& issues) { + const auto addSubIssues = [](TIssue&& issue, const TIssues& issues) { std::for_each(issues.begin(), issues.end(), [&](const TIssue& i) { - issue.AddSubIssue(MakeIntrusive<TIssue>(TPosition(i.Position.Column, i.Position.Row, fullName), i.GetMessage())); + issue.AddSubIssue(MakeIntrusive<TIssue>(i)); }); return std::move(issue); }; @@ -514,10 +514,6 @@ bool TModuleResolver::AddFromMemory(const TString& fullName, const TString& modu TAstParseResult astRes; if (sExpr) { astRes = ParseAst(query, nullptr, fullName); - if (!astRes.IsOk()) { - ctx.AddError(addSubIssues(TIssue(pos, TStringBuilder() << "Failed to parse YQL: " << fullName), astRes.Issues)); - return false; - } } else { NSQLTranslation::TTranslationSettings settings; settings.Mode = NSQLTranslation::ESqlMode::LIBRARY; @@ -528,10 +524,17 @@ bool TModuleResolver::AddFromMemory(const TString& fullName, const TString& modu settings.V0Behavior = NSQLTranslation::EV0Behavior::Silent; settings.FileAliasPrefix = FileAliasPrefix; astRes = SqlToYql(Translators, query, settings); - if (!astRes.IsOk()) { - ctx.AddError(addSubIssues(TIssue(pos, TStringBuilder() << "Failed to parse SQL: " << fullName), astRes.Issues)); - return false; - } + } + + if (!astRes.IsOk()) { + ctx.AddError(addSubIssues(TIssue(pos, TStringBuilder() << "Failed to parse: " << fullName), astRes.Issues)); + return false; + } + + if (!astRes.Issues.Empty()) { + auto issue = TIssue(pos, TStringBuilder() << "Parsing issues for: " << fullName); + issue.SetCode(TIssuesIds::INFO, NYql::TSeverityIds::S_INFO); + ctx.IssueManager.RaiseIssue(addSubIssues(std::move(issue), astRes.Issues)); } TLibraryCohesion cohesion; diff --git a/yql/essentials/sql/v1/context.cpp b/yql/essentials/sql/v1/context.cpp index 4082757671..9aac807dbc 100644 --- a/yql/essentials/sql/v1/context.cpp +++ b/yql/essentials/sql/v1/context.cpp @@ -361,10 +361,6 @@ bool TContext::AddExport(TPosition pos, const TString& name) { Error(pos) << "Can not export anonymous name " << name; return false; } - if (Exports.contains(name)) { - Error(pos) << "Duplicate export symbol: " << name; - return false; - } if (!Scoped->LookupNode(name)) { Error(pos) << "Unable to export unknown symbol: " << name; return false; diff --git a/yql/essentials/tests/sql/suites/library/lib1.sql.txt b/yql/essentials/tests/sql/suites/library/lib1.sql.txt index 0de921bca3..29cad53a7f 100644 --- a/yql/essentials/tests/sql/suites/library/lib1.sql.txt +++ b/yql/essentials/tests/sql/suites/library/lib1.sql.txt @@ -1,5 +1,9 @@ import lib2 symbols $mul; +$sqr = 1; + +export $sqr; + $sqr = ($x)->{ return $mul($x, $x); }; export $sqr; |