@abaplint/core 2.83.1 → 2.83.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -6
- package/build/abaplint.d.ts +3 -36
- package/build/src/abap/2_statements/expressions/index.js +0 -7
- package/build/src/abap/2_statements/statement_parser.js +1 -1
- package/build/src/abap/artifacts.js +3 -3
- package/build/src/abap/flow/flow_graph.js +7 -7
- package/build/src/cds/artifacts.js +18 -0
- package/build/src/cds/cds_lexer.js +111 -0
- package/build/src/cds/cds_parser.js +25 -0
- package/build/src/cds/expressions/cds_annotation.js +14 -0
- package/build/src/cds/expressions/cds_association.js +13 -0
- package/build/src/cds/expressions/cds_define_view.js +14 -0
- package/build/src/cds/expressions/cds_element.js +12 -0
- package/build/src/cds/expressions/cds_join.js +12 -0
- package/build/src/cds/expressions/cds_name.js +11 -0
- package/build/src/cds/expressions/cds_select.js +15 -0
- package/build/src/cds/expressions/cds_where.js +12 -0
- package/build/src/cds/expressions/index.js +21 -0
- package/build/src/config.js +1 -0
- package/build/src/ddl/artifacts.js +18 -0
- package/build/src/ddl/ddl_parser.js +1 -1
- package/build/src/{abap/2_statements/expressions/ddl → ddl/expressions}/ddl_include.js +1 -1
- package/build/src/{abap/2_statements/expressions/ddl → ddl/expressions}/ddl_name.js +1 -1
- package/build/src/{abap/2_statements/expressions/ddl → ddl/expressions}/ddl_structure.js +1 -1
- package/build/src/{abap/2_statements/expressions/ddl → ddl/expressions}/ddl_structure_field.js +1 -1
- package/build/src/{abap/2_statements/expressions/ddl → ddl/expressions}/ddl_table.js +1 -1
- package/build/src/{abap/2_statements/expressions/ddl → ddl/expressions}/ddl_table_field.js +1 -1
- package/build/src/{abap/2_statements/expressions/ddl → ddl/expressions}/ddl_type.js +1 -1
- package/build/src/ddl/expressions/index.js +20 -0
- package/build/src/index.js +2 -2
- package/build/src/lsp/help.js +7 -7
- package/build/src/objects/data_definition.js +10 -2
- package/build/src/registry.js +1 -1
- package/build/src/rules/abapdoc.js +1 -1
- package/build/src/rules/align_parameters.js +33 -33
- package/build/src/rules/ambiguous_statement.js +5 -5
- package/build/src/rules/avoid_use.js +6 -6
- package/build/src/rules/begin_end_names.js +4 -4
- package/build/src/rules/begin_single_include.js +12 -12
- package/build/src/rules/call_transaction_authority_check.js +3 -3
- package/build/src/rules/cds_parser_error.js +46 -0
- package/build/src/rules/chain_mainly_declarations.js +4 -4
- package/build/src/rules/check_abstract.js +2 -2
- package/build/src/rules/check_comments.js +3 -3
- package/build/src/rules/check_include.js +3 -3
- package/build/src/rules/check_no_handler_pragma.js +8 -8
- package/build/src/rules/check_subrc.js +8 -8
- package/build/src/rules/commented_code.js +1 -1
- package/build/src/rules/constructor_visibility_public.js +4 -4
- package/build/src/rules/contains_tab.js +2 -2
- package/build/src/rules/dangerous_statement.js +1 -1
- package/build/src/rules/downport.js +35 -35
- package/build/src/rules/exit_or_check.js +3 -3
- package/build/src/rules/exporting.js +1 -1
- package/build/src/rules/forbidden_identifier.js +1 -1
- package/build/src/rules/forbidden_void_type.js +2 -2
- package/build/src/rules/functional_writing.js +17 -17
- package/build/src/rules/global_class.js +10 -10
- package/build/src/rules/identical_conditions.js +2 -2
- package/build/src/rules/identical_contents.js +15 -15
- package/build/src/rules/identical_descriptions.js +4 -4
- package/build/src/rules/if_in_if.js +7 -7
- package/build/src/rules/implement_methods.js +3 -3
- package/build/src/rules/in_statement_indentation.js +11 -11
- package/build/src/rules/index.js +1 -0
- package/build/src/rules/intf_referencing_clas.js +3 -3
- package/build/src/rules/line_break_style.js +2 -2
- package/build/src/rules/line_length.js +1 -1
- package/build/src/rules/line_only_punc.js +1 -1
- package/build/src/rules/local_variable_names.js +2 -2
- package/build/src/rules/many_parentheses.js +10 -10
- package/build/src/rules/max_one_method_parameter_per_line.js +7 -7
- package/build/src/rules/max_one_statement.js +3 -3
- package/build/src/rules/nesting.js +1 -1
- package/build/src/rules/no_chained_assignment.js +1 -1
- package/build/src/rules/no_public_attributes.js +1 -1
- package/build/src/rules/no_yoda_conditions.js +4 -4
- package/build/src/rules/obsolete_statement.js +40 -38
- package/build/src/rules/omit_parameter_name.js +3 -3
- package/build/src/rules/omit_receiving.js +13 -13
- package/build/src/rules/parser_702_chaining.js +2 -2
- package/build/src/rules/parser_error.js +2 -2
- package/build/src/rules/parser_missing_space.js +1 -1
- package/build/src/rules/prefer_inline.js +16 -16
- package/build/src/rules/prefer_is_not.js +7 -7
- package/build/src/rules/prefer_raise_exception_new.js +3 -3
- package/build/src/rules/prefer_returning_to_exporting.js +1 -1
- package/build/src/rules/prefer_xsdbool.js +2 -2
- package/build/src/rules/remove_descriptions.js +4 -4
- package/build/src/rules/rfc_error_handling.js +9 -9
- package/build/src/rules/select_add_order_by.js +5 -5
- package/build/src/rules/select_performance.js +2 -2
- package/build/src/rules/sicf_consistency.js +4 -4
- package/build/src/rules/space_before_dot.js +2 -2
- package/build/src/rules/start_at_tab.js +1 -1
- package/build/src/rules/sy_modification.js +2 -2
- package/build/src/rules/tabl_enhancement_category.js +2 -2
- package/build/src/rules/unused_methods.js +9 -9
- package/build/src/rules/unused_variables.js +6 -6
- package/build/src/rules/use_bool_expression.js +8 -8
- package/build/src/rules/use_line_exists.js +6 -6
- package/build/src/rules/use_new.js +2 -2
- package/build/src/rules/when_others_last.js +6 -6
- package/package.json +66 -66
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
# @abaplint/core
|
|
2
|
-
|
|
3
|
-
[abaplint](https://abaplint.org/) core library
|
|
4
|
-
|
|
5
|
-
Exposes functionallity like the parser and rules, which can be used in other projects.
|
|
6
|
-
|
|
1
|
+
# @abaplint/core
|
|
2
|
+
|
|
3
|
+
[abaplint](https://abaplint.org/) core library
|
|
4
|
+
|
|
5
|
+
Exposes functionallity like the parser and rules, which can be used in other projects.
|
|
6
|
+
|
|
7
7
|
For more information see https://github.com/abaplint/abaplint
|
package/build/abaplint.d.ts
CHANGED
|
@@ -170,7 +170,7 @@ declare class ArrowOrDash extends Expression {
|
|
|
170
170
|
getRunnable(): IStatementRunnable;
|
|
171
171
|
}
|
|
172
172
|
|
|
173
|
-
export declare class
|
|
173
|
+
export declare class ArtifactsABAP {
|
|
174
174
|
static getStructures(): IStructure[];
|
|
175
175
|
static getExpressions(): (new () => Expression)[];
|
|
176
176
|
static getStatements(): IStatement[];
|
|
@@ -1123,6 +1123,8 @@ declare class DataDefinition extends AbstractObject {
|
|
|
1123
1123
|
getDescription(): string | undefined;
|
|
1124
1124
|
parseType(_reg: IRegistry): AbstractType;
|
|
1125
1125
|
setDirty(): void;
|
|
1126
|
+
findSourceFile(): IFile | undefined;
|
|
1127
|
+
temporaryParse(): ExpressionNode | undefined;
|
|
1126
1128
|
parse(): IParseResult;
|
|
1127
1129
|
}
|
|
1128
1130
|
|
|
@@ -1188,44 +1190,16 @@ declare class DDIC {
|
|
|
1188
1190
|
textToType(text: string | undefined, length: string | undefined, decimals: string | undefined, parent: string, qualify?: boolean): AbstractType;
|
|
1189
1191
|
}
|
|
1190
1192
|
|
|
1191
|
-
declare class DDLInclude extends Expression {
|
|
1192
|
-
getRunnable(): IStatementRunnable;
|
|
1193
|
-
}
|
|
1194
|
-
|
|
1195
1193
|
declare enum DDLKind {
|
|
1196
1194
|
Structure = "structure",
|
|
1197
1195
|
Table = "table"
|
|
1198
1196
|
}
|
|
1199
1197
|
|
|
1200
|
-
declare class DDLName extends Expression {
|
|
1201
|
-
getRunnable(): IStatementRunnable;
|
|
1202
|
-
}
|
|
1203
|
-
|
|
1204
1198
|
export declare class DDLParser {
|
|
1205
1199
|
parse(file: IFile): IDDLParserResult | undefined;
|
|
1206
1200
|
private parsedToResult;
|
|
1207
1201
|
}
|
|
1208
1202
|
|
|
1209
|
-
declare class DDLStructure extends Expression {
|
|
1210
|
-
getRunnable(): IStatementRunnable;
|
|
1211
|
-
}
|
|
1212
|
-
|
|
1213
|
-
declare class DDLStructureField extends Expression {
|
|
1214
|
-
getRunnable(): IStatementRunnable;
|
|
1215
|
-
}
|
|
1216
|
-
|
|
1217
|
-
declare class DDLTable extends Expression {
|
|
1218
|
-
getRunnable(): IStatementRunnable;
|
|
1219
|
-
}
|
|
1220
|
-
|
|
1221
|
-
declare class DDLTableField extends Expression {
|
|
1222
|
-
getRunnable(): IStatementRunnable;
|
|
1223
|
-
}
|
|
1224
|
-
|
|
1225
|
-
declare class DDLType extends Expression {
|
|
1226
|
-
getRunnable(): IStatementRunnable;
|
|
1227
|
-
}
|
|
1228
|
-
|
|
1229
1203
|
declare class DecFloat16Type extends AbstractType {
|
|
1230
1204
|
toText(): string;
|
|
1231
1205
|
isGeneric(): boolean;
|
|
@@ -1689,13 +1663,6 @@ declare namespace Expressions {
|
|
|
1689
1663
|
DataDefinition_2 as DataDefinition,
|
|
1690
1664
|
DatabaseConnection,
|
|
1691
1665
|
DatabaseTable,
|
|
1692
|
-
DDLInclude,
|
|
1693
|
-
DDLName,
|
|
1694
|
-
DDLStructureField,
|
|
1695
|
-
DDLStructure,
|
|
1696
|
-
DDLTableField,
|
|
1697
|
-
DDLTable,
|
|
1698
|
-
DDLType,
|
|
1699
1666
|
Decimals,
|
|
1700
1667
|
Default,
|
|
1701
1668
|
DefinitionName,
|
|
@@ -47,13 +47,6 @@ __exportStar(require("./corresponding_body"), exports);
|
|
|
47
47
|
__exportStar(require("./data_definition"), exports);
|
|
48
48
|
__exportStar(require("./database_connection"), exports);
|
|
49
49
|
__exportStar(require("./database_table"), exports);
|
|
50
|
-
__exportStar(require("./ddl/ddl_include"), exports);
|
|
51
|
-
__exportStar(require("./ddl/ddl_name"), exports);
|
|
52
|
-
__exportStar(require("./ddl/ddl_structure_field"), exports);
|
|
53
|
-
__exportStar(require("./ddl/ddl_structure"), exports);
|
|
54
|
-
__exportStar(require("./ddl/ddl_table_field"), exports);
|
|
55
|
-
__exportStar(require("./ddl/ddl_table"), exports);
|
|
56
|
-
__exportStar(require("./ddl/ddl_type"), exports);
|
|
57
50
|
__exportStar(require("./decimals"), exports);
|
|
58
51
|
__exportStar(require("./default"), exports);
|
|
59
52
|
__exportStar(require("./definition_name"), exports);
|
|
@@ -14,7 +14,7 @@ exports.STATEMENT_MAX_TOKENS = 1000;
|
|
|
14
14
|
class StatementMap {
|
|
15
15
|
constructor() {
|
|
16
16
|
this.map = {};
|
|
17
|
-
for (const stat of artifacts_1.
|
|
17
|
+
for (const stat of artifacts_1.ArtifactsABAP.getStatements()) {
|
|
18
18
|
const f = stat.getMatcher().first();
|
|
19
19
|
if (f.length === 0) {
|
|
20
20
|
throw new Error("StatementMap, first must have contents");
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.ArtifactsABAP = void 0;
|
|
4
4
|
const Statements = require("./2_statements/statements");
|
|
5
5
|
const Expressions = require("./2_statements/expressions");
|
|
6
6
|
const combi_1 = require("./2_statements/combi");
|
|
@@ -35,7 +35,7 @@ class List {
|
|
|
35
35
|
function className(cla) {
|
|
36
36
|
return cla.constructor.name;
|
|
37
37
|
}
|
|
38
|
-
class
|
|
38
|
+
class ArtifactsABAP {
|
|
39
39
|
static getStructures() {
|
|
40
40
|
const ret = [];
|
|
41
41
|
const list = Structures;
|
|
@@ -77,5 +77,5 @@ class Artifacts {
|
|
|
77
77
|
return list.get();
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
|
-
exports.
|
|
80
|
+
exports.ArtifactsABAP = ArtifactsABAP;
|
|
81
81
|
//# sourceMappingURL=artifacts.js.map
|
|
@@ -72,13 +72,13 @@ class FlowGraph {
|
|
|
72
72
|
this.label = label;
|
|
73
73
|
}
|
|
74
74
|
toDigraph() {
|
|
75
|
-
return `digraph G {
|
|
76
|
-
labelloc="t";
|
|
77
|
-
label="${this.label}";
|
|
78
|
-
graph [fontname = "helvetica"];
|
|
79
|
-
node [fontname = "helvetica", shape="box"];
|
|
80
|
-
edge [fontname = "helvetica"];
|
|
81
|
-
${this.toTextEdges()}
|
|
75
|
+
return `digraph G {
|
|
76
|
+
labelloc="t";
|
|
77
|
+
label="${this.label}";
|
|
78
|
+
graph [fontname = "helvetica"];
|
|
79
|
+
node [fontname = "helvetica", shape="box"];
|
|
80
|
+
edge [fontname = "helvetica"];
|
|
81
|
+
${this.toTextEdges()}
|
|
82
82
|
}`;
|
|
83
83
|
}
|
|
84
84
|
listSources(node) {
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ArtifactsCDS = void 0;
|
|
4
|
+
const Expressions = require("./expressions");
|
|
5
|
+
class ArtifactsCDS {
|
|
6
|
+
static getExpressions() {
|
|
7
|
+
const ret = [];
|
|
8
|
+
const list = Expressions;
|
|
9
|
+
for (const key in Expressions) {
|
|
10
|
+
if (typeof list[key] === "function") {
|
|
11
|
+
ret.push(list[key]);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return ret;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.ArtifactsCDS = ArtifactsCDS;
|
|
18
|
+
//# sourceMappingURL=artifacts.js.map
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CDSLexer = void 0;
|
|
4
|
+
const tokens_1 = require("../abap/1_lexer/tokens");
|
|
5
|
+
const position_1 = require("../position");
|
|
6
|
+
// todo: Keywords must be all uppercase, all lowercase, or in lowercase with an
|
|
7
|
+
// uppercase initial letter. Other mixes of uppercase and lowercase are not allowed
|
|
8
|
+
class Stream {
|
|
9
|
+
constructor(buffer) {
|
|
10
|
+
this.buffer = buffer;
|
|
11
|
+
}
|
|
12
|
+
takeNext() {
|
|
13
|
+
const next = this.buffer.substring(0, 1);
|
|
14
|
+
this.buffer = this.buffer.substring(1);
|
|
15
|
+
return next;
|
|
16
|
+
}
|
|
17
|
+
peekNext() {
|
|
18
|
+
const next = this.buffer.substring(0, 1);
|
|
19
|
+
return next;
|
|
20
|
+
}
|
|
21
|
+
length() {
|
|
22
|
+
return this.buffer.length;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
class Result {
|
|
26
|
+
constructor() {
|
|
27
|
+
this.result = [];
|
|
28
|
+
}
|
|
29
|
+
add(text, row, col) {
|
|
30
|
+
if (text.length > 0) {
|
|
31
|
+
this.result.push(new tokens_1.Identifier(new position_1.Position(row, col), text));
|
|
32
|
+
}
|
|
33
|
+
return "";
|
|
34
|
+
}
|
|
35
|
+
get() {
|
|
36
|
+
return this.result;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
var Mode;
|
|
40
|
+
(function (Mode) {
|
|
41
|
+
Mode[Mode["Default"] = 0] = "Default";
|
|
42
|
+
Mode[Mode["String"] = 1] = "String";
|
|
43
|
+
Mode[Mode["SingleLineComment"] = 2] = "SingleLineComment";
|
|
44
|
+
Mode[Mode["MultiLineComment"] = 3] = "MultiLineComment";
|
|
45
|
+
})(Mode || (Mode = {}));
|
|
46
|
+
class CDSLexer {
|
|
47
|
+
static run(file) {
|
|
48
|
+
const result = new Result();
|
|
49
|
+
let mode = Mode.Default;
|
|
50
|
+
let row = 1;
|
|
51
|
+
let col = 1;
|
|
52
|
+
let build = "";
|
|
53
|
+
const stream = new Stream(file.getRaw());
|
|
54
|
+
while (stream.length() > 0) {
|
|
55
|
+
const next = stream.takeNext();
|
|
56
|
+
const nextNext = stream.peekNext();
|
|
57
|
+
col++;
|
|
58
|
+
if (mode === Mode.String) {
|
|
59
|
+
build += next;
|
|
60
|
+
if (next === "'") {
|
|
61
|
+
build = result.add(build, row, col);
|
|
62
|
+
mode = Mode.Default;
|
|
63
|
+
}
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
if (mode === Mode.SingleLineComment) {
|
|
67
|
+
if (next === "\n") {
|
|
68
|
+
mode = Mode.Default;
|
|
69
|
+
}
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
else if (mode === Mode.Default && next === "/" && nextNext === "/") {
|
|
73
|
+
mode = Mode.SingleLineComment;
|
|
74
|
+
build = result.add(build, row, col);
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
switch (next) {
|
|
78
|
+
case "'":
|
|
79
|
+
mode = Mode.String;
|
|
80
|
+
build += next;
|
|
81
|
+
break;
|
|
82
|
+
case " ":
|
|
83
|
+
build = result.add(build, row, col);
|
|
84
|
+
break;
|
|
85
|
+
case "\n":
|
|
86
|
+
build = result.add(build, row, col);
|
|
87
|
+
row++;
|
|
88
|
+
col = 0;
|
|
89
|
+
break;
|
|
90
|
+
case ";":
|
|
91
|
+
case ",":
|
|
92
|
+
case ".":
|
|
93
|
+
case "{":
|
|
94
|
+
case ":":
|
|
95
|
+
case "}":
|
|
96
|
+
case "[":
|
|
97
|
+
case "]":
|
|
98
|
+
build = result.add(build, row, col);
|
|
99
|
+
result.add(next, row, col);
|
|
100
|
+
break;
|
|
101
|
+
default:
|
|
102
|
+
build += next;
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
result.add(build, row, col);
|
|
107
|
+
return result.get();
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
exports.CDSLexer = CDSLexer;
|
|
111
|
+
//# sourceMappingURL=cds_lexer.js.map
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CDSParser = void 0;
|
|
4
|
+
const combi_1 = require("../abap/2_statements/combi");
|
|
5
|
+
const nodes_1 = require("../abap/nodes");
|
|
6
|
+
const version_1 = require("../version");
|
|
7
|
+
const cds_lexer_1 = require("./cds_lexer");
|
|
8
|
+
const Expressions = require("./expressions");
|
|
9
|
+
// todo: the names of the ABAP + CDS + DDL expressions might overlap, if overlapping the singleton will fail
|
|
10
|
+
class CDSParser {
|
|
11
|
+
parse(file) {
|
|
12
|
+
if (file === undefined) {
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
const tokens = cds_lexer_1.CDSLexer.run(file);
|
|
16
|
+
// console.dir(tokens);
|
|
17
|
+
const res = combi_1.Combi.run(new Expressions.CDSDefineView(), tokens, version_1.defaultVersion);
|
|
18
|
+
if (res === undefined || !(res[0] instanceof nodes_1.ExpressionNode)) {
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
return res[0];
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.CDSParser = CDSParser;
|
|
25
|
+
//# sourceMappingURL=cds_parser.js.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CDSAnnotation = void 0;
|
|
4
|
+
const combi_1 = require("../../abap/2_statements/combi");
|
|
5
|
+
class CDSAnnotation extends combi_1.Expression {
|
|
6
|
+
getRunnable() {
|
|
7
|
+
// todo: add all the known annotations
|
|
8
|
+
const value = (0, combi_1.alt)((0, combi_1.regex)(/^'[\w ]+'$/), "true", "false", (0, combi_1.regex)(/^#\w+$/));
|
|
9
|
+
const valueList = (0, combi_1.seq)("[", value, (0, combi_1.star)((0, combi_1.seq)(",", value)), "]");
|
|
10
|
+
return (0, combi_1.seq)((0, combi_1.regex)(/^@\w+$/), (0, combi_1.plus)((0, combi_1.seq)(".", (0, combi_1.regex)(/^\w+$/))), (0, combi_1.opt)(":"), (0, combi_1.opt)((0, combi_1.alt)(valueList, value)));
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.CDSAnnotation = CDSAnnotation;
|
|
14
|
+
//# sourceMappingURL=cds_annotation.js.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CDSAssociation = void 0;
|
|
4
|
+
const _1 = require(".");
|
|
5
|
+
const combi_1 = require("../../abap/2_statements/combi");
|
|
6
|
+
class CDSAssociation extends combi_1.Expression {
|
|
7
|
+
getRunnable() {
|
|
8
|
+
const cardinality = (0, combi_1.alt)("[0..1]", "[0..*]");
|
|
9
|
+
return (0, combi_1.seq)("ASSOCIATION", cardinality, "TO", _1.CDSName);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.CDSAssociation = CDSAssociation;
|
|
13
|
+
//# sourceMappingURL=cds_association.js.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CDSDefineView = void 0;
|
|
4
|
+
const _1 = require(".");
|
|
5
|
+
const combi_1 = require("../../abap/2_statements/combi");
|
|
6
|
+
const cds_name_1 = require("./cds_name");
|
|
7
|
+
const cds_select_1 = require("./cds_select");
|
|
8
|
+
class CDSDefineView extends combi_1.Expression {
|
|
9
|
+
getRunnable() {
|
|
10
|
+
return (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), (0, combi_1.str)("DEFINE VIEW"), cds_name_1.CDSName, "AS", cds_select_1.CDSSelect, (0, combi_1.opt)(";"));
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.CDSDefineView = CDSDefineView;
|
|
14
|
+
//# sourceMappingURL=cds_define_view.js.map
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CDSElement = void 0;
|
|
4
|
+
const _1 = require(".");
|
|
5
|
+
const combi_1 = require("../../abap/2_statements/combi");
|
|
6
|
+
class CDSElement extends combi_1.Expression {
|
|
7
|
+
getRunnable() {
|
|
8
|
+
return (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), (0, combi_1.optPrio)("KEY"), _1.CDSName, (0, combi_1.optPrio)((0, combi_1.seq)("AS", _1.CDSName)));
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.CDSElement = CDSElement;
|
|
12
|
+
//# sourceMappingURL=cds_element.js.map
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CDSJoin = void 0;
|
|
4
|
+
const _1 = require(".");
|
|
5
|
+
const combi_1 = require("../../abap/2_statements/combi");
|
|
6
|
+
class CDSJoin extends combi_1.Expression {
|
|
7
|
+
getRunnable() {
|
|
8
|
+
return (0, combi_1.seq)("INNER JOIN", _1.CDSName);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.CDSJoin = CDSJoin;
|
|
12
|
+
//# sourceMappingURL=cds_join.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CDSName = void 0;
|
|
4
|
+
const combi_1 = require("../../abap/2_statements/combi");
|
|
5
|
+
class CDSName extends combi_1.Expression {
|
|
6
|
+
getRunnable() {
|
|
7
|
+
return (0, combi_1.regex)(/^\$?[\w_]+$/);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.CDSName = CDSName;
|
|
11
|
+
//# sourceMappingURL=cds_name.js.map
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CDSSelect = void 0;
|
|
4
|
+
const _1 = require(".");
|
|
5
|
+
const combi_1 = require("../../abap/2_statements/combi");
|
|
6
|
+
const cds_association_1 = require("./cds_association");
|
|
7
|
+
const cds_element_1 = require("./cds_element");
|
|
8
|
+
const cds_join_1 = require("./cds_join");
|
|
9
|
+
class CDSSelect extends combi_1.Expression {
|
|
10
|
+
getRunnable() {
|
|
11
|
+
return (0, combi_1.seq)((0, combi_1.str)("SELECT FROM"), _1.CDSName, (0, combi_1.opt)((0, combi_1.seq)("AS", _1.CDSName)), (0, combi_1.opt)(cds_join_1.CDSJoin), (0, combi_1.star)(cds_association_1.CDSAssociation), (0, combi_1.str)("{"), (0, combi_1.plus)(cds_element_1.CDSElement), (0, combi_1.star)((0, combi_1.seq)(",", cds_element_1.CDSElement)), (0, combi_1.str)("}"), (0, combi_1.opt)(_1.CDSWhere));
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.CDSSelect = CDSSelect;
|
|
15
|
+
//# sourceMappingURL=cds_select.js.map
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CDSWhere = void 0;
|
|
4
|
+
const _1 = require(".");
|
|
5
|
+
const combi_1 = require("../../abap/2_statements/combi");
|
|
6
|
+
class CDSWhere extends combi_1.Expression {
|
|
7
|
+
getRunnable() {
|
|
8
|
+
return (0, combi_1.seq)("WHERE", _1.CDSName, "=", _1.CDSName, (0, combi_1.star)((0, combi_1.seq)(".", _1.CDSName)));
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.CDSWhere = CDSWhere;
|
|
12
|
+
//# sourceMappingURL=cds_where.js.map
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
__exportStar(require("./cds_annotation"), exports);
|
|
14
|
+
__exportStar(require("./cds_association"), exports);
|
|
15
|
+
__exportStar(require("./cds_define_view"), exports);
|
|
16
|
+
__exportStar(require("./cds_element"), exports);
|
|
17
|
+
__exportStar(require("./cds_join"), exports);
|
|
18
|
+
__exportStar(require("./cds_name"), exports);
|
|
19
|
+
__exportStar(require("./cds_select"), exports);
|
|
20
|
+
__exportStar(require("./cds_where"), exports);
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
package/build/src/config.js
CHANGED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ArtifactsDDL = void 0;
|
|
4
|
+
const Expressions = require("./expressions");
|
|
5
|
+
class ArtifactsDDL {
|
|
6
|
+
static getExpressions() {
|
|
7
|
+
const ret = [];
|
|
8
|
+
const list = Expressions;
|
|
9
|
+
for (const key in Expressions) {
|
|
10
|
+
if (typeof list[key] === "function") {
|
|
11
|
+
ret.push(list[key]);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return ret;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.ArtifactsDDL = ArtifactsDDL;
|
|
18
|
+
//# sourceMappingURL=artifacts.js.map
|
|
@@ -5,7 +5,7 @@ const combi_1 = require("../abap/2_statements/combi");
|
|
|
5
5
|
const nodes_1 = require("../abap/nodes");
|
|
6
6
|
const version_1 = require("../version");
|
|
7
7
|
const ddl_lexer_1 = require("./ddl_lexer");
|
|
8
|
-
const Expressions = require("
|
|
8
|
+
const Expressions = require("./expressions");
|
|
9
9
|
var DDLKind;
|
|
10
10
|
(function (DDLKind) {
|
|
11
11
|
DDLKind["Structure"] = "structure";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DDLInclude = void 0;
|
|
4
|
-
const combi_1 = require("../../combi");
|
|
4
|
+
const combi_1 = require("../../abap/2_statements/combi");
|
|
5
5
|
const ddl_name_1 = require("./ddl_name");
|
|
6
6
|
class DDLInclude extends combi_1.Expression {
|
|
7
7
|
getRunnable() {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DDLName = void 0;
|
|
4
|
-
const combi_1 = require("../../combi");
|
|
4
|
+
const combi_1 = require("../../abap/2_statements/combi");
|
|
5
5
|
class DDLName extends combi_1.Expression {
|
|
6
6
|
getRunnable() {
|
|
7
7
|
return (0, combi_1.regex)(/^\w+$/);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DDLStructure = void 0;
|
|
4
|
-
const combi_1 = require("../../combi");
|
|
4
|
+
const combi_1 = require("../../abap/2_statements/combi");
|
|
5
5
|
const ddl_structure_field_1 = require("./ddl_structure_field");
|
|
6
6
|
const ddl_name_1 = require("./ddl_name");
|
|
7
7
|
const ddl_include_1 = require("./ddl_include");
|
package/build/src/{abap/2_statements/expressions/ddl → ddl/expressions}/ddl_structure_field.js
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DDLStructureField = void 0;
|
|
4
|
-
const combi_1 = require("../../combi");
|
|
4
|
+
const combi_1 = require("../../abap/2_statements/combi");
|
|
5
5
|
const ddl_name_1 = require("./ddl_name");
|
|
6
6
|
const ddl_type_1 = require("./ddl_type");
|
|
7
7
|
class DDLStructureField extends combi_1.Expression {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DDLTable = void 0;
|
|
4
|
-
const combi_1 = require("../../combi");
|
|
4
|
+
const combi_1 = require("../../abap/2_statements/combi");
|
|
5
5
|
const ddl_include_1 = require("./ddl_include");
|
|
6
6
|
const ddl_name_1 = require("./ddl_name");
|
|
7
7
|
const ddl_table_field_1 = require("./ddl_table_field");
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DDLTableField = void 0;
|
|
4
|
-
const combi_1 = require("../../combi");
|
|
4
|
+
const combi_1 = require("../../abap/2_statements/combi");
|
|
5
5
|
const ddl_name_1 = require("./ddl_name");
|
|
6
6
|
const ddl_type_1 = require("./ddl_type");
|
|
7
7
|
class DDLTableField extends combi_1.Expression {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DDLType = void 0;
|
|
4
|
-
const combi_1 = require("../../combi");
|
|
4
|
+
const combi_1 = require("../../abap/2_statements/combi");
|
|
5
5
|
class DDLType extends combi_1.Expression {
|
|
6
6
|
getRunnable() {
|
|
7
7
|
return (0, combi_1.regex)(/^(abap\.)?\w+(\(\d+\))?$/);
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
__exportStar(require("./ddl_include"), exports);
|
|
14
|
+
__exportStar(require("./ddl_name"), exports);
|
|
15
|
+
__exportStar(require("./ddl_structure_field"), exports);
|
|
16
|
+
__exportStar(require("./ddl_structure"), exports);
|
|
17
|
+
__exportStar(require("./ddl_table_field"), exports);
|
|
18
|
+
__exportStar(require("./ddl_table"), exports);
|
|
19
|
+
__exportStar(require("./ddl_type"), exports);
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
package/build/src/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Severity = exports.Visibility = exports.Info = exports.Rename = exports.PrettyPrinter = exports.Position = exports.CurrentScope = exports.ABAPFile = exports.SpaghettiScope = exports.SyntaxLogic = exports.ABAPObject = exports.Tokens = exports.LanguageServerTypes = exports.DDLParser = exports.applyEditList = exports.applyEditSingle = exports.SpaghettiScopeNode = exports.AbstractFile = exports.Token = exports.ScopeType = exports.BasicTypes = exports.TypedIdentifier = exports.AbstractType = exports.VirtualPosition = exports.Comment = exports.Unknown = exports.Empty = exports.Identifier = exports.Nodes = exports.Types = exports.Expressions = exports.Statements = exports.Structures = exports.Objects = exports.ArtifactsRules = exports.ArtifactsObjects = exports.
|
|
3
|
+
exports.Severity = exports.Visibility = exports.Info = exports.Rename = exports.PrettyPrinter = exports.Position = exports.CurrentScope = exports.ABAPFile = exports.SpaghettiScope = exports.SyntaxLogic = exports.ABAPObject = exports.Tokens = exports.LanguageServerTypes = exports.DDLParser = exports.applyEditList = exports.applyEditSingle = exports.SpaghettiScopeNode = exports.AbstractFile = exports.Token = exports.ScopeType = exports.BasicTypes = exports.TypedIdentifier = exports.AbstractType = exports.VirtualPosition = exports.Comment = exports.Unknown = exports.Empty = exports.Identifier = exports.Nodes = exports.Types = exports.Expressions = exports.Statements = exports.Structures = exports.Objects = exports.ArtifactsRules = exports.ArtifactsObjects = exports.ArtifactsABAP = exports.BuiltIn = exports.MethodLengthStats = exports.LanguageServer = exports.Registry = exports.ReferenceType = exports.Version = exports.Config = exports.Issue = exports.MemoryFile = void 0;
|
|
4
4
|
const issue_1 = require("./issue");
|
|
5
5
|
Object.defineProperty(exports, "Issue", { enumerable: true, get: function () { return issue_1.Issue; } });
|
|
6
6
|
const config_1 = require("./config");
|
|
@@ -16,7 +16,7 @@ Object.defineProperty(exports, "LanguageServer", { enumerable: true, get: functi
|
|
|
16
16
|
const LanguageServerTypes = require("./lsp/_interfaces");
|
|
17
17
|
exports.LanguageServerTypes = LanguageServerTypes;
|
|
18
18
|
const artifacts_1 = require("./abap/artifacts");
|
|
19
|
-
Object.defineProperty(exports, "
|
|
19
|
+
Object.defineProperty(exports, "ArtifactsABAP", { enumerable: true, get: function () { return artifacts_1.ArtifactsABAP; } });
|
|
20
20
|
const artifacts_objects_1 = require("./artifacts_objects");
|
|
21
21
|
Object.defineProperty(exports, "ArtifactsObjects", { enumerable: true, get: function () { return artifacts_objects_1.ArtifactsObjects; } });
|
|
22
22
|
const artifacts_rules_1 = require("./artifacts_rules");
|
package/build/src/lsp/help.js
CHANGED
|
@@ -9,13 +9,13 @@ const dump_scope_1 = require("./dump_scope");
|
|
|
9
9
|
class Help {
|
|
10
10
|
static find(reg, textDocument, position) {
|
|
11
11
|
let content = "";
|
|
12
|
-
content = `
|
|
13
|
-
<a href="#_tokens" rel="no-refresh">Tokens</a> |
|
|
14
|
-
<a href="#_statements" rel="no-refresh">Statements</a> |
|
|
15
|
-
<a href="#_structure" rel="no-refresh">Structure</a> |
|
|
16
|
-
<a href="#_files" rel="no-refresh">Files</a> |
|
|
17
|
-
<a href="#_info" rel="no-refresh">Info Dump</a>
|
|
18
|
-
<hr>
|
|
12
|
+
content = `
|
|
13
|
+
<a href="#_tokens" rel="no-refresh">Tokens</a> |
|
|
14
|
+
<a href="#_statements" rel="no-refresh">Statements</a> |
|
|
15
|
+
<a href="#_structure" rel="no-refresh">Structure</a> |
|
|
16
|
+
<a href="#_files" rel="no-refresh">Files</a> |
|
|
17
|
+
<a href="#_info" rel="no-refresh">Info Dump</a>
|
|
18
|
+
<hr>
|
|
19
19
|
` +
|
|
20
20
|
"<tt>" + textDocument.uri + " (" +
|
|
21
21
|
(position.line + 1) + ", " +
|