@abaplint/transpiler-cli 2.10.22 → 2.10.24
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/abap_transpile +1 -1
- package/build/bundle.js +554 -198
- package/package.json +9 -9
- package/schema.json +0 -161
package/build/bundle.js
CHANGED
|
@@ -4155,7 +4155,7 @@ const _1 = __webpack_require__(/*! . */ "./node_modules/@abaplint/core/build/src
|
|
|
4155
4155
|
class FieldLength extends combi_1.Expression {
|
|
4156
4156
|
getRunnable() {
|
|
4157
4157
|
const normal = (0, combi_1.seq)((0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.Plus)), (0, combi_1.altPrio)((0, combi_1.regex)(/^\d+$/), _1.SimpleFieldChain2));
|
|
4158
|
-
const length = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.ParenLeft), (0, combi_1.altPrio)(normal, "*"), (0, combi_1.tok)(tokens_1.ParenRightW));
|
|
4158
|
+
const length = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.ParenLeft), (0, combi_1.optPrio)((0, combi_1.altPrio)(normal, "*")), (0, combi_1.tok)(tokens_1.ParenRightW));
|
|
4159
4159
|
return length;
|
|
4160
4160
|
}
|
|
4161
4161
|
}
|
|
@@ -4201,9 +4201,10 @@ exports.FieldSub = void 0;
|
|
|
4201
4201
|
const combi_1 = __webpack_require__(/*! ../combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
|
|
4202
4202
|
const tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ "./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js");
|
|
4203
4203
|
const table_body_1 = __webpack_require__(/*! ./table_body */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/table_body.js");
|
|
4204
|
+
const field_length_1 = __webpack_require__(/*! ./field_length */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field_length.js");
|
|
4204
4205
|
class FieldSub extends combi_1.Expression {
|
|
4205
4206
|
getRunnable() {
|
|
4206
|
-
const ret = (0, combi_1.seq)((0, combi_1.regex)(/^\*?!?&?(\/\w+\/)?[a-zA-Z_%$\?][\w%$\$\*]*$/), (0, combi_1.starPrio)((0, combi_1.seq)((0, combi_1.tok)(tokens_1.Dash), (0, combi_1.regex)(/^[\w%$\$\*]+$/))), (0, combi_1.opt)(table_body_1.TableBody));
|
|
4207
|
+
const ret = (0, combi_1.seq)((0, combi_1.regex)(/^\*?!?&?(\/\w+\/)?[a-zA-Z_%$\?][\w%$\$\*]*$/), (0, combi_1.starPrio)((0, combi_1.seq)((0, combi_1.tok)(tokens_1.Dash), (0, combi_1.regex)(/^[\w%$\$\*]+$/))), (0, combi_1.opt)(field_length_1.FieldLength), (0, combi_1.opt)(table_body_1.TableBody));
|
|
4207
4208
|
return ret;
|
|
4208
4209
|
}
|
|
4209
4210
|
}
|
|
@@ -6844,7 +6845,7 @@ exports.SQLAliasField = void 0;
|
|
|
6844
6845
|
const combi_1 = __webpack_require__(/*! ../combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
|
|
6845
6846
|
class SQLAliasField extends combi_1.Expression {
|
|
6846
6847
|
getRunnable() {
|
|
6847
|
-
return (0, combi_1.regex)(/^(\/\w+\/)?\w
|
|
6848
|
+
return (0, combi_1.regex)(/^(\/\w+\/)?\w+~(\/\w+\/)?\w+$/);
|
|
6848
6849
|
}
|
|
6849
6850
|
}
|
|
6850
6851
|
exports.SQLAliasField = SQLAliasField;
|
|
@@ -7222,7 +7223,7 @@ exports.SQLFieldName = void 0;
|
|
|
7222
7223
|
const combi_1 = __webpack_require__(/*! ../combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
|
|
7223
7224
|
class SQLFieldName extends combi_1.Expression {
|
|
7224
7225
|
getRunnable() {
|
|
7225
|
-
return (0, combi_1.regex)(/^(?!(?:SINGLE|INTO|DISTINCT|AS|WHERE|FOR|HAVING|APPENDING|UP|FROM)$)(\/\w+\/)?(\w+~(\w+|\*)|\w+)$/i);
|
|
7226
|
+
return (0, combi_1.regex)(/^(?!(?:SINGLE|INTO|DISTINCT|AS|WHERE|FOR|HAVING|APPENDING|UP|FROM)$)(\/\w+\/)?(\w+~(\/\w+\/)?(\w+|\*)|\w+)$/i);
|
|
7226
7227
|
}
|
|
7227
7228
|
}
|
|
7228
7229
|
exports.SQLFieldName = SQLFieldName;
|
|
@@ -7367,7 +7368,7 @@ const integer_1 = __webpack_require__(/*! ./integer */ "./node_modules/@abaplint
|
|
|
7367
7368
|
const sql_function_input_1 = __webpack_require__(/*! ./sql_function_input */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_function_input.js");
|
|
7368
7369
|
class SQLFunction extends combi_1.Expression {
|
|
7369
7370
|
getRunnable() {
|
|
7370
|
-
const castTypes = (0, combi_1.altPrio)((0, combi_1.seq)("CHAR", (0, combi_1.tok)(tokens_1.ParenLeftW), integer_1.Integer, (0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.seq)("DEC", (0, combi_1.tok)(tokens_1.ParenLeftW), integer_1.Integer, ",", integer_1.Integer, (0, combi_1.tok)(tokens_1.WParenRightW)), "FLTP", "
|
|
7371
|
+
const castTypes = (0, combi_1.altPrio)((0, combi_1.seq)("CHAR", (0, combi_1.optPrio)((0, combi_1.seq)((0, combi_1.tok)(tokens_1.ParenLeftW), integer_1.Integer, (0, combi_1.tok)(tokens_1.WParenRightW)))), (0, combi_1.seq)("DEC", (0, combi_1.tok)(tokens_1.ParenLeftW), integer_1.Integer, ",", integer_1.Integer, (0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.seq)("NUMC", (0, combi_1.optPrio)((0, combi_1.seq)((0, combi_1.tok)(tokens_1.ParenLeftW), integer_1.Integer, (0, combi_1.tok)(tokens_1.WParenRightW)))), "FLTP", "INT2", "INT8");
|
|
7371
7372
|
const commaParam = (0, combi_1.seq)(",", sql_function_input_1.SQLFunctionInput);
|
|
7372
7373
|
// note: the function names are not keywords, they are usually in lower case
|
|
7373
7374
|
const abs = (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.seq)((0, combi_1.regex)(/^abs$/i), (0, combi_1.tok)(tokens_1.ParenLeftW), sql_function_input_1.SQLFunctionInput, (0, combi_1.tok)(tokens_1.WParenRightW)));
|
|
@@ -7384,7 +7385,12 @@ class SQLFunction extends combi_1.Expression {
|
|
|
7384
7385
|
const round = (0, combi_1.ver)(version_1.Version.v750, (0, combi_1.seq)((0, combi_1.regex)(/^round$/i), (0, combi_1.tok)(tokens_1.ParenLeftW), sql_function_input_1.SQLFunctionInput, commaParam, (0, combi_1.tok)(tokens_1.WParenRightW)));
|
|
7385
7386
|
const upper = (0, combi_1.ver)(version_1.Version.v751, (0, combi_1.seq)((0, combi_1.regex)(/^upper$/i), (0, combi_1.tok)(tokens_1.ParenLeftW), sql_function_input_1.SQLFunctionInput, (0, combi_1.tok)(tokens_1.WParenRightW)));
|
|
7386
7387
|
const uuid = (0, combi_1.ver)(version_1.Version.v754, (0, combi_1.seq)((0, combi_1.regex)(/^uuid$/i), (0, combi_1.tok)(tokens_1.ParenLeftW), (0, combi_1.tok)(tokens_1.WParenRightW)));
|
|
7387
|
-
|
|
7388
|
+
const concat_with_space = (0, combi_1.ver)(version_1.Version.v751, (0, combi_1.seq)((0, combi_1.regex)(/^concat_with_space$/i), (0, combi_1.tok)(tokens_1.ParenLeftW), sql_function_input_1.SQLFunctionInput, commaParam, commaParam, (0, combi_1.tok)(tokens_1.WParenRightW)));
|
|
7389
|
+
// dunno if the version for substring is correct
|
|
7390
|
+
const substring = (0, combi_1.ver)(version_1.Version.v750, (0, combi_1.seq)((0, combi_1.regex)(/^substring$/i), (0, combi_1.tok)(tokens_1.ParenLeftW), sql_function_input_1.SQLFunctionInput, commaParam, commaParam, (0, combi_1.tok)(tokens_1.WParenRightW)));
|
|
7391
|
+
const ltrim = (0, combi_1.ver)(version_1.Version.v750, (0, combi_1.seq)((0, combi_1.regex)(/^ltrim$/i), (0, combi_1.tok)(tokens_1.ParenLeftW), sql_function_input_1.SQLFunctionInput, commaParam, (0, combi_1.tok)(tokens_1.WParenRightW)));
|
|
7392
|
+
const rtrim = (0, combi_1.ver)(version_1.Version.v750, (0, combi_1.seq)((0, combi_1.regex)(/^rtrim$/i), (0, combi_1.tok)(tokens_1.ParenLeftW), sql_function_input_1.SQLFunctionInput, commaParam, (0, combi_1.tok)(tokens_1.WParenRightW)));
|
|
7393
|
+
return (0, combi_1.altPrio)(uuid, abs, ceil, floor, cast, div, mod, coalesce, concat, replace, length, lower, upper, round, concat_with_space, ltrim, rtrim, substring);
|
|
7388
7394
|
}
|
|
7389
7395
|
}
|
|
7390
7396
|
exports.SQLFunction = SQLFunction;
|
|
@@ -8375,7 +8381,7 @@ class TypeTable extends combi_1.Expression {
|
|
|
8375
8381
|
const rangeLike = (0, combi_1.seq)("RANGE OF", field_chain_1.FieldChain, (0, combi_1.optPrio)(header), (0, combi_1.optPrio)(initial), (0, combi_1.optPrio)("VALUE IS INITIAL"));
|
|
8376
8382
|
// a maximum of 15 secondary table keys can be defined
|
|
8377
8383
|
// "WITH" is not allowed as a field name in keys
|
|
8378
|
-
const typetable = (0, combi_1.alt)(generic, (0, combi_1.seq)(normal1, (0, combi_1.alt)((0, combi_1.opt)((0, combi_1.per)(header, initial, (0, combi_1.plusPrio)(type_table_key_1.TypeTableKey))), (0, combi_1.seq)((0, combi_1.plus)(type_table_key_1.TypeTableKey), (0, combi_1.optPrio)(initial)))));
|
|
8384
|
+
const typetable = (0, combi_1.alt)(generic, (0, combi_1.seq)(normal1, (0, combi_1.alt)((0, combi_1.opt)((0, combi_1.per)(header, initial, (0, combi_1.plusPrio)(type_table_key_1.TypeTableKey))), (0, combi_1.seq)((0, combi_1.plus)(type_table_key_1.TypeTableKey), (0, combi_1.optPrio)(initial))), (0, combi_1.optPrio)("VALUE IS INITIAL")));
|
|
8379
8385
|
const occurs = (0, combi_1.seq)("OCCURS", (0, combi_1.altPrio)(_1.Integer, field_chain_1.FieldChain));
|
|
8380
8386
|
const derived = (0, combi_1.ver)(version_1.Version.v754, (0, combi_1.seq)("TABLE FOR", (0, combi_1.altPrio)("ACTION IMPORT", "ACTION RESULT", "CREATE", "EVENT", "REPORTED EARLY", "FAILED EARLY", "FAILED", "LOCK", "DETERMINATION", "READ RESULT", "UPDATE"), (0, combi_1.alt)(_1.TypeName, _1.EntityAssociation)));
|
|
8381
8387
|
const oldType = (0, combi_1.seq)((0, combi_1.opt)("REF TO"), _1.TypeName, (0, combi_1.alt)((0, combi_1.seq)(occurs, (0, combi_1.opt)(header)), header));
|
|
@@ -9117,7 +9123,7 @@ class Assign {
|
|
|
9117
9123
|
const decimals = (0, combi_1.seq)("DECIMALS", expressions_1.Source);
|
|
9118
9124
|
const casting = (0, combi_1.seq)("CASTING", (0, combi_1.opt)((0, combi_1.alt)(like, handle, (0, combi_1.per)(type, decimals))));
|
|
9119
9125
|
const obsoleteType = (0, combi_1.seq)("TYPE", expressions_1.Source, (0, combi_1.optPrio)(decimals));
|
|
9120
|
-
const ret = (0, combi_1.seq)("ASSIGN", (0, combi_1.opt)((0, combi_1.seq)(expressions_1.Target, "INCREMENT")), expressions_1.AssignSource, "TO", expressions_1.FSTarget, (0, combi_1.opt)((0, combi_1.altPrio)(casting, obsoleteType)), (0, combi_1.opt)(range), (0, combi_1.opt)((0, combi_1.ver)(version_1.Version.v757, "ELSE UNASSIGN")));
|
|
9126
|
+
const ret = (0, combi_1.seq)("ASSIGN", (0, combi_1.opt)((0, combi_1.seq)(expressions_1.Target, "INCREMENT")), expressions_1.AssignSource, "TO", expressions_1.FSTarget, (0, combi_1.opt)((0, combi_1.altPrio)(casting, obsoleteType, decimals)), (0, combi_1.opt)(range), (0, combi_1.opt)((0, combi_1.ver)(version_1.Version.v757, "ELSE UNASSIGN")));
|
|
9121
9127
|
return ret;
|
|
9122
9128
|
}
|
|
9123
9129
|
}
|
|
@@ -9597,7 +9603,7 @@ const version_1 = __webpack_require__(/*! ../../../version */ "./node_modules/@a
|
|
|
9597
9603
|
class CallOLE {
|
|
9598
9604
|
getMatcher() {
|
|
9599
9605
|
const rc = (0, combi_1.seq)("=", expressions_1.Target);
|
|
9600
|
-
const ret = (0, combi_1.seq)("CALL METHOD OF", expressions_1.Source, expressions_1.Source, (0, combi_1.opt)(rc), (0, combi_1.opt)("NO FLUSH"), (0, combi_1.opt)("
|
|
9606
|
+
const ret = (0, combi_1.seq)("CALL METHOD OF", expressions_1.Source, expressions_1.Source, (0, combi_1.opt)(rc), (0, combi_1.opt)("NO FLUSH"), (0, combi_1.opt)("QUEUE-ONLY"), (0, combi_1.opt)(expressions_1.OLEExporting));
|
|
9601
9607
|
return (0, combi_1.verNot)(version_1.Version.Cloud, ret);
|
|
9602
9608
|
}
|
|
9603
9609
|
}
|
|
@@ -10275,10 +10281,12 @@ const version_1 = __webpack_require__(/*! ../../../version */ "./node_modules/@a
|
|
|
10275
10281
|
class Communication {
|
|
10276
10282
|
getMatcher() {
|
|
10277
10283
|
const length = (0, combi_1.seq)("LENGTH", expressions_1.Target);
|
|
10284
|
+
const returncode = (0, combi_1.seq)("RETURNCODE", expressions_1.Source);
|
|
10285
|
+
const buffer = (0, combi_1.seq)("BUFFER", expressions_1.Target);
|
|
10278
10286
|
const init = (0, combi_1.seq)("INIT ID", expressions_1.Source, "DESTINATION", expressions_1.Target);
|
|
10279
|
-
const allocate = (0, combi_1.seq)("ALLOCATE ID", expressions_1.Source);
|
|
10280
|
-
const send = (0, combi_1.seq)("SEND ID", expressions_1.Source,
|
|
10281
|
-
const deallocate = (0, combi_1.seq)("DEALLOCATE ID", expressions_1.Source);
|
|
10287
|
+
const allocate = (0, combi_1.seq)("ALLOCATE ID", expressions_1.Source, (0, combi_1.opt)(returncode));
|
|
10288
|
+
const send = (0, combi_1.seq)("SEND ID", expressions_1.Source, (0, combi_1.opt)((0, combi_1.per)(buffer, length)), (0, combi_1.opt)(returncode));
|
|
10289
|
+
const deallocate = (0, combi_1.seq)("DEALLOCATE ID", expressions_1.Source, (0, combi_1.opt)(returncode));
|
|
10282
10290
|
const accept = (0, combi_1.seq)("ACCEPT ID", expressions_1.Source);
|
|
10283
10291
|
const receive = (0, combi_1.seq)("RECEIVE ID", expressions_1.Source, "BUFFER", expressions_1.Source, (0, combi_1.opt)(length), "DATAINFO", expressions_1.Target, "STATUSINFO", expressions_1.Target, "RECEIVED", expressions_1.Target);
|
|
10284
10292
|
const ret = (0, combi_1.seq)("COMMUNICATION", (0, combi_1.alt)(init, allocate, send, deallocate, receive, accept));
|
|
@@ -10791,7 +10799,8 @@ class DeleteDatabase {
|
|
|
10791
10799
|
getMatcher() {
|
|
10792
10800
|
const where = (0, combi_1.seq)("WHERE", (0, combi_1.altPrio)(expressions_1.SQLCond, expressions_1.Dynamic));
|
|
10793
10801
|
const from = (0, combi_1.seq)("FROM", expressions_1.DatabaseTable, (0, combi_1.optPrio)(sql_client_1.SQLClient), (0, combi_1.optPrio)(expressions_1.DatabaseConnection), (0, combi_1.opt)(where));
|
|
10794
|
-
const
|
|
10802
|
+
const fromSomething = (0, combi_1.seq)("FROM", (0, combi_1.opt)("TABLE"), expressions_1.SQLSourceSimple);
|
|
10803
|
+
const table = (0, combi_1.seq)(expressions_1.DatabaseTable, (0, combi_1.optPrio)(sql_client_1.SQLClient), (0, combi_1.optPrio)(expressions_1.DatabaseConnection), (0, combi_1.optPrio)(fromSomething));
|
|
10795
10804
|
const ret = (0, combi_1.seq)("DELETE", (0, combi_1.altPrio)(from, table));
|
|
10796
10805
|
return ret;
|
|
10797
10806
|
}
|
|
@@ -10867,13 +10876,13 @@ class DeleteInternal {
|
|
|
10867
10876
|
const index = (0, combi_1.seq)("INDEX", expressions_1.Source);
|
|
10868
10877
|
const keyName = (0, combi_1.altPrio)(expressions_1.SimpleName, expressions_1.Dynamic);
|
|
10869
10878
|
const using = (0, combi_1.seq)("USING KEY", keyName);
|
|
10870
|
-
const from = (0, combi_1.
|
|
10871
|
-
const fromTo = (0, combi_1.seq)(from, (0, combi_1.optPrio)((0, combi_1.seq)("TO", expressions_1.Source)));
|
|
10879
|
+
const from = (0, combi_1.seq)("FROM", expressions_1.Source);
|
|
10880
|
+
const fromTo = (0, combi_1.seq)((0, combi_1.optPrio)(from), (0, combi_1.optPrio)((0, combi_1.seq)("TO", expressions_1.Source)));
|
|
10872
10881
|
const where = (0, combi_1.seq)("WHERE", (0, combi_1.alt)(expressions_1.ComponentCond, expressions_1.Dynamic));
|
|
10873
10882
|
const key = (0, combi_1.seq)("WITH TABLE KEY", (0, combi_1.opt)((0, combi_1.seq)(keyName, "COMPONENTS")), (0, combi_1.plus)(expressions_1.ComponentCompare));
|
|
10874
|
-
const table = (0, combi_1.seq)("TABLE", expressions_1.Target, (0, combi_1.alt)((0, combi_1.per)(index, using), from, key));
|
|
10883
|
+
const table = (0, combi_1.seq)("TABLE", expressions_1.Target, (0, combi_1.alt)((0, combi_1.per)(index, using), (0, combi_1.seq)((0, combi_1.optPrio)(from), (0, combi_1.optPrio)(using)), key));
|
|
10875
10884
|
const other = (0, combi_1.seq)(expressions_1.Target, (0, combi_1.alt)((0, combi_1.per)(index, using), fromTo, key), (0, combi_1.opt)(where));
|
|
10876
|
-
const f = (0, combi_1.seq)(expressions_1.
|
|
10885
|
+
const f = (0, combi_1.seq)(expressions_1.SimpleFieldChain2, (0, combi_1.optPrio)(expressions_1.FieldOffset), (0, combi_1.optPrio)(expressions_1.FieldLength));
|
|
10877
10886
|
const adjacent = (0, combi_1.seq)("ADJACENT DUPLICATES FROM", expressions_1.Target, (0, combi_1.optPrio)(using), (0, combi_1.opt)((0, combi_1.seq)("COMPARING", (0, combi_1.altPrio)("ALL FIELDS", (0, combi_1.plus)((0, combi_1.altPrio)(f, expressions_1.Dynamic))))), (0, combi_1.optPrio)(using));
|
|
10878
10887
|
return (0, combi_1.seq)("DELETE", (0, combi_1.alt)(table, adjacent, other));
|
|
10879
10888
|
}
|
|
@@ -10901,7 +10910,7 @@ class DeleteMemory {
|
|
|
10901
10910
|
const memory = (0, combi_1.seq)("MEMORY ID", expressions_1.Source);
|
|
10902
10911
|
const id = (0, combi_1.seq)("ID", expressions_1.Source);
|
|
10903
10912
|
const client = (0, combi_1.seq)("CLIENT", expressions_1.Source);
|
|
10904
|
-
const shared = (0, combi_1.seq)("SHARED", (0, combi_1.altPrio)("MEMORY", "BUFFER"), expressions_1.Field, "(",
|
|
10913
|
+
const shared = (0, combi_1.seq)("SHARED", (0, combi_1.altPrio)("MEMORY", "BUFFER"), expressions_1.Field, "(", (0, combi_1.regex)(/^[\w%]+$/), ")", (0, combi_1.optPrio)(client), id);
|
|
10905
10914
|
const ret = (0, combi_1.seq)("DELETE FROM", (0, combi_1.alt)(memory, shared));
|
|
10906
10915
|
return (0, combi_1.verNot)(version_1.Version.Cloud, ret);
|
|
10907
10916
|
}
|
|
@@ -11911,11 +11920,11 @@ const expressions_1 = __webpack_require__(/*! ../expressions */ "./node_modules/
|
|
|
11911
11920
|
// todo, cloud, split?
|
|
11912
11921
|
class Export {
|
|
11913
11922
|
getMatcher() {
|
|
11914
|
-
const from = (0, combi_1.seq)("FROM", expressions_1.Source);
|
|
11923
|
+
const from = (0, combi_1.seq)((0, combi_1.altPrio)("FROM", "="), expressions_1.Source);
|
|
11915
11924
|
const client = (0, combi_1.seq)("CLIENT", expressions_1.Source);
|
|
11916
11925
|
const id = (0, combi_1.seq)("ID", expressions_1.Source);
|
|
11917
11926
|
const using = (0, combi_1.seq)("USING", expressions_1.Source);
|
|
11918
|
-
const cluster = (0, combi_1.seq)(expressions_1.NamespaceSimpleName, (0, combi_1.tok)(tokens_1.ParenLeft), (0, combi_1.regex)(/^[\w
|
|
11927
|
+
const cluster = (0, combi_1.seq)(expressions_1.NamespaceSimpleName, (0, combi_1.tok)(tokens_1.ParenLeft), (0, combi_1.regex)(/^[\w$%\^~]{2}$/), (0, combi_1.tok)(tokens_1.ParenRightW));
|
|
11919
11928
|
const buffer = (0, combi_1.seq)("DATA BUFFER", expressions_1.Target);
|
|
11920
11929
|
const memory = (0, combi_1.seq)("MEMORY", (0, combi_1.opt)((0, combi_1.seq)("ID", expressions_1.Source)));
|
|
11921
11930
|
const table = (0, combi_1.seq)("INTERNAL TABLE", expressions_1.Target);
|
|
@@ -11923,7 +11932,7 @@ class Export {
|
|
|
11923
11932
|
const database = (0, combi_1.seq)("DATABASE", cluster, (0, combi_1.per)(from, client, id, using));
|
|
11924
11933
|
const target = (0, combi_1.alt)(buffer, memory, database, table, shared);
|
|
11925
11934
|
const left = (0, combi_1.alt)(expressions_1.FieldSub, expressions_1.FieldSymbol);
|
|
11926
|
-
const source = (0, combi_1.alt)((0, combi_1.plus)((0, combi_1.altPrio)(
|
|
11935
|
+
const source = (0, combi_1.alt)((0, combi_1.plus)((0, combi_1.altPrio)((0, combi_1.seq)(left, from), left)), expressions_1.Dynamic, expressions_1.Constant);
|
|
11927
11936
|
const compression = (0, combi_1.seq)("COMPRESSION", (0, combi_1.alt)("ON", "OFF"));
|
|
11928
11937
|
const hint = (0, combi_1.seq)("CODE PAGE HINT", expressions_1.Source);
|
|
11929
11938
|
return (0, combi_1.seq)("EXPORT", source, "TO", target, (0, combi_1.opt)(compression), (0, combi_1.opt)(hint));
|
|
@@ -12021,9 +12030,12 @@ exports.Field = void 0;
|
|
|
12021
12030
|
const combi_1 = __webpack_require__(/*! ../combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
|
|
12022
12031
|
const expressions_1 = __webpack_require__(/*! ../expressions */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js");
|
|
12023
12032
|
const version_1 = __webpack_require__(/*! ../../../version */ "./node_modules/@abaplint/core/build/src/version.js");
|
|
12033
|
+
const tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ "./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js");
|
|
12024
12034
|
class Field {
|
|
12025
12035
|
getMatcher() {
|
|
12026
|
-
const
|
|
12036
|
+
const module = (0, combi_1.seq)("MODULE", expressions_1.FormName, (0, combi_1.opt)((0, combi_1.alt)("ON INPUT", "ON REQUEST")));
|
|
12037
|
+
const values = (0, combi_1.seq)("VALUES", (0, combi_1.tok)(tokens_1.WParenLeft), "BETWEEN", expressions_1.Constant, "AND", expressions_1.Constant, (0, combi_1.tok)(tokens_1.ParenRightW));
|
|
12038
|
+
const ret = (0, combi_1.seq)("FIELD", expressions_1.FieldChain, (0, combi_1.opt)((0, combi_1.alt)(module, values)));
|
|
12027
12039
|
return (0, combi_1.verNot)(version_1.Version.Cloud, ret);
|
|
12028
12040
|
}
|
|
12029
12041
|
}
|
|
@@ -12666,7 +12678,7 @@ const expressions_1 = __webpack_require__(/*! ../expressions */ "./node_modules/
|
|
|
12666
12678
|
const version_1 = __webpack_require__(/*! ../../../version */ "./node_modules/@abaplint/core/build/src/version.js");
|
|
12667
12679
|
class GetProperty {
|
|
12668
12680
|
getMatcher() {
|
|
12669
|
-
const ret = (0, combi_1.seq)("GET PROPERTY OF", expressions_1.FieldSub, expressions_1.Source, "=", expressions_1.Source, (0, combi_1.opt)("NO FLUSH"), (0, combi_1.opt)("QUEUEONLY"), (0, combi_1.opt)(expressions_1.OLEExporting));
|
|
12681
|
+
const ret = (0, combi_1.seq)("GET PROPERTY OF", expressions_1.FieldSub, (0, combi_1.alt)(expressions_1.Source, expressions_1.ConstantString), "=", expressions_1.Source, (0, combi_1.opt)("NO FLUSH"), (0, combi_1.opt)((0, combi_1.alt)("QUEUE-ONLY", "QUEUEONLY")), (0, combi_1.opt)(expressions_1.OLEExporting));
|
|
12670
12682
|
return (0, combi_1.verNot)(version_1.Version.Cloud, ret);
|
|
12671
12683
|
}
|
|
12672
12684
|
}
|
|
@@ -13264,6 +13276,7 @@ __exportStar(__webpack_require__(/*! ./set_locks */ "./node_modules/@abaplint/co
|
|
|
13264
13276
|
__exportStar(__webpack_require__(/*! ./enhancement */ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/enhancement.js"), exports);
|
|
13265
13277
|
__exportStar(__webpack_require__(/*! ./end_enhancement */ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/end_enhancement.js"), exports);
|
|
13266
13278
|
__exportStar(__webpack_require__(/*! ./form_definition */ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/form_definition.js"), exports);
|
|
13279
|
+
__exportStar(__webpack_require__(/*! ./verification_message */ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/verification_message.js"), exports);
|
|
13267
13280
|
//# sourceMappingURL=index.js.map
|
|
13268
13281
|
|
|
13269
13282
|
/***/ }),
|
|
@@ -13800,7 +13813,7 @@ class MethodDef {
|
|
|
13800
13813
|
const forfunction = (0, combi_1.seq)("FOR FUNCTION", expressions_1.TypeName, result);
|
|
13801
13814
|
const behavior = (0, combi_1.altPrio)((0, combi_1.seq)("VALIDATE ON SAVE IMPORTING", expressions_1.MethodParamName, "FOR", expressions_1.TypeName), (0, combi_1.seq)("MODIFY IMPORTING", expressions_1.MethodParamName, modify), (0, combi_1.seq)("READ IMPORTING", expressions_1.MethodParamName, (0, combi_1.altPrio)(forRead, forfunction)), (0, combi_1.seq)("FEATURES IMPORTING", expressions_1.MethodParamName, "REQUEST", expressions_1.NamespaceSimpleName, "FOR", expressions_1.NamespaceSimpleName, result), (0, combi_1.seq)("BEHAVIOR IMPORTING", expressions_1.MethodParamName, "FOR CREATE", expressions_1.TypeName, expressions_1.MethodParamName, "FOR UPDATE", expressions_1.TypeName, expressions_1.MethodParamName, "FOR DELETE", expressions_1.TypeName), (0, combi_1.seq)("BEHAVIOR IMPORTING", expressions_1.MethodParamName, "FOR READ", expressions_1.TypeName, result), (0, combi_1.seq)((0, combi_1.alt)("BEHAVIOR", "LOCK"), "IMPORTING", expressions_1.MethodParamName, "FOR LOCK", expressions_1.TypeName), (0, combi_1.seq)("DETERMINE", (0, combi_1.alt)("ON MODIFY", "ON SAVE"), "IMPORTING", expressions_1.MethodParamName, "FOR", expressions_1.TypeName), (0, combi_1.seq)("GLOBAL AUTHORIZATION IMPORTING REQUEST", expressions_1.MethodParamName, "FOR", expressions_1.TypeName, result), (0, combi_1.seq)("INSTANCE AUTHORIZATION IMPORTING", expressions_1.MethodParamName, "REQUEST", expressions_1.MethodParamName, "FOR", expressions_1.TypeName, result), (0, combi_1.seq)("INSTANCE FEATURES IMPORTING", expressions_1.MethodParamName, "REQUEST", expressions_1.MethodParamName, "FOR", expressions_1.TypeName, result));
|
|
13802
13815
|
// todo, this is only from version something
|
|
13803
|
-
const amdp = (0, combi_1.seq)("AMDP OPTIONS CDS SESSION CLIENT CURRENT", (0, combi_1.optPrio)(expressions_1.MethodDefImporting), (0, combi_1.optPrio)(expressions_1.MethodDefExporting), (0, combi_1.optPrio)(expressions_1.MethodDefRaising));
|
|
13816
|
+
const amdp = (0, combi_1.seq)("AMDP OPTIONS", (0, combi_1.optPrio)("READ-ONLY"), "CDS SESSION CLIENT CURRENT", (0, combi_1.optPrio)(expressions_1.MethodDefImporting), (0, combi_1.optPrio)(expressions_1.MethodDefExporting), (0, combi_1.optPrio)(expressions_1.MethodDefRaising));
|
|
13804
13817
|
const ret = (0, combi_1.seq)((0, combi_1.altPrio)("CLASS-METHODS", "METHODS"), expressions_1.MethodName, (0, combi_1.alt)((0, combi_1.seq)((0, combi_1.optPrio)(expressions_1.Abstract), (0, combi_1.optPrio)(def), expressions_1.EventHandler), parameters, testing, (0, combi_1.seq)("FOR", (0, combi_1.alt)(tableFunction, ddl, behavior)), amdp, "NOT AT END OF MODE", (0, combi_1.optPrio)(expressions_1.Redefinition)));
|
|
13805
13818
|
return ret;
|
|
13806
13819
|
}
|
|
@@ -13918,9 +13931,9 @@ class ModifyInternal {
|
|
|
13918
13931
|
const using = (0, combi_1.seq)("USING KEY", expressions_1.SimpleName);
|
|
13919
13932
|
const additions = (0, combi_1.per)(where, assigning, using);
|
|
13920
13933
|
const target = (0, combi_1.alt)(expressions_1.Target, expressions_1.Dynamic);
|
|
13921
|
-
const options = (0, combi_1.alt)((0, combi_1.per)(index, transporting), (0, combi_1.seq)(from, (0, combi_1.opt)((0, combi_1.per)(index, transporting))), (0, combi_1.seq)((0, combi_1.per)(index, transporting), from, (0, combi_1.opt)((0, combi_1.per)(index, transporting))));
|
|
13934
|
+
const options = (0, combi_1.alt)((0, combi_1.per)(index, transporting), (0, combi_1.seq)(from, (0, combi_1.opt)((0, combi_1.per)(index, transporting, using))), (0, combi_1.seq)((0, combi_1.per)(index, transporting), from, (0, combi_1.opt)((0, combi_1.per)(index, transporting))));
|
|
13922
13935
|
const long = (0, combi_1.seq)("MODIFY", (0, combi_1.opt)("TABLE"), target, (0, combi_1.opt)(options), (0, combi_1.opt)(additions));
|
|
13923
|
-
const simple = (0, combi_1.seq)("MODIFY TABLE", target,
|
|
13936
|
+
const simple = (0, combi_1.seq)("MODIFY TABLE", target, (0, combi_1.per)(from, using));
|
|
13924
13937
|
return (0, combi_1.alt)(long, simple);
|
|
13925
13938
|
}
|
|
13926
13939
|
}
|
|
@@ -13946,7 +13959,7 @@ class ModifyLine {
|
|
|
13946
13959
|
getMatcher() {
|
|
13947
13960
|
const onOff = (0, combi_1.alt)("ON", "OFF");
|
|
13948
13961
|
const eq = (0, combi_1.seq)("=", expressions_1.Source);
|
|
13949
|
-
const form = (0, combi_1.seq)((0, combi_1.alt)("INVERSE", "INPUT", "COLOR"), (0, combi_1.alt)(eq, onOff));
|
|
13962
|
+
const form = (0, combi_1.seq)((0, combi_1.alt)("INVERSE", "INPUT", "COLOR", "HOTSPOT"), (0, combi_1.opt)((0, combi_1.alt)(eq, onOff)));
|
|
13950
13963
|
const from = (0, combi_1.seq)("FROM", expressions_1.Source);
|
|
13951
13964
|
const value = (0, combi_1.seq)("FIELD VALUE", (0, combi_1.plus)((0, combi_1.seq)(expressions_1.Source, (0, combi_1.optPrio)(from))));
|
|
13952
13965
|
const format = (0, combi_1.seq)("FIELD FORMAT", expressions_1.Source, (0, combi_1.opt)(form));
|
|
@@ -14006,7 +14019,8 @@ const expressions_1 = __webpack_require__(/*! ../expressions */ "./node_modules/
|
|
|
14006
14019
|
const version_1 = __webpack_require__(/*! ../../../version */ "./node_modules/@abaplint/core/build/src/version.js");
|
|
14007
14020
|
class Module {
|
|
14008
14021
|
getMatcher() {
|
|
14009
|
-
const
|
|
14022
|
+
const sw = (0, combi_1.seq)("SWITCH", expressions_1.NamespaceSimpleName);
|
|
14023
|
+
const ret = (0, combi_1.seq)("MODULE", expressions_1.FormName, (0, combi_1.opt)((0, combi_1.alt)("INPUT", "OUTPUT", "ON CHAIN-REQUEST", "ON CHAIN-INPUT", "AT EXIT-COMMAND", sw)));
|
|
14010
14024
|
return (0, combi_1.verNot)(version_1.Version.Cloud, ret);
|
|
14011
14025
|
}
|
|
14012
14026
|
}
|
|
@@ -14343,7 +14357,7 @@ class Parameter {
|
|
|
14343
14357
|
const type = (0, combi_1.seq)((0, combi_1.altPrio)("TYPE", "LIKE"), (0, combi_1.altPrio)(expressions_1.TypeName, expressions_1.Dynamic));
|
|
14344
14358
|
const memory = (0, combi_1.seq)("MEMORY ID", expressions_1.SimpleSource1);
|
|
14345
14359
|
const listbox = (0, combi_1.str)("AS LISTBOX");
|
|
14346
|
-
const cmd = (0, combi_1.seq)("USER-COMMAND", (0, combi_1.regex)(
|
|
14360
|
+
const cmd = (0, combi_1.seq)("USER-COMMAND", (0, combi_1.regex)(/^[\w\?\/]+$/));
|
|
14347
14361
|
const modif = (0, combi_1.seq)("MODIF ID", expressions_1.Modif);
|
|
14348
14362
|
const visible = (0, combi_1.seq)("VISIBLE LENGTH", expressions_1.Constant);
|
|
14349
14363
|
const length = (0, combi_1.seq)("LENGTH", expressions_1.Constant);
|
|
@@ -15290,7 +15304,8 @@ class ScrollList {
|
|
|
15290
15304
|
const line = (0, combi_1.seq)("LINE", expressions_1.Source);
|
|
15291
15305
|
const column = (0, combi_1.seq)("TO COLUMN", expressions_1.Source);
|
|
15292
15306
|
const to = (0, combi_1.seq)("TO", (0, combi_1.alt)("FIRST PAGE", "LAST PAGE", (0, combi_1.seq)("PAGE", expressions_1.Source)));
|
|
15293
|
-
const
|
|
15307
|
+
const pages = (0, combi_1.seq)(expressions_1.Source, "PAGES");
|
|
15308
|
+
const ret = (0, combi_1.seq)("SCROLL LIST", (0, combi_1.per)(index, (0, combi_1.seq)((0, combi_1.alt)(to, "BACKWARD", "FORWARD"), (0, combi_1.opt)(pages)), (0, combi_1.seq)((0, combi_1.alt)("LEFT", "RIGHT"), (0, combi_1.opt)((0, combi_1.seq)("BY", expressions_1.Source, "PLACES"))), column, line));
|
|
15294
15309
|
return (0, combi_1.verNot)(version_1.Version.Cloud, ret);
|
|
15295
15310
|
}
|
|
15296
15311
|
}
|
|
@@ -15422,7 +15437,7 @@ class SelectionScreen {
|
|
|
15422
15437
|
const exclude = (0, combi_1.seq)("EXCLUDE", (0, combi_1.alt)("IDS", "PARAMETERS"), (0, combi_1.regex)(/^\w+$/));
|
|
15423
15438
|
const beginVersion = (0, combi_1.seq)("BEGIN OF VERSION", (0, combi_1.regex)(/^\w+$/), expressions_1.TextElement);
|
|
15424
15439
|
const endVersion = (0, combi_1.seq)("END OF VERSION", (0, combi_1.regex)(/^\w+$/));
|
|
15425
|
-
const ret = (0, combi_1.seq)("SELECTION-SCREEN", (0, combi_1.altPrio)(comment, func, skip, pos, incl, iso, push, tab, uline, beginBlock, tabbed, endBlock, beginLine, endLine, param, beginScreen, endScreen, exclude, beginVersion, endVersion));
|
|
15440
|
+
const ret = (0, combi_1.seq)("SELECTION-SCREEN", (0, combi_1.altPrio)(comment, func, skip, pos, incl, iso, push, tab, uline, beginBlock, tabbed, endBlock, beginLine, endLine, param, beginScreen, endScreen, exclude, beginVersion, endVersion, def));
|
|
15426
15441
|
return (0, combi_1.verNot)(version_1.Version.Cloud, ret);
|
|
15427
15442
|
}
|
|
15428
15443
|
}
|
|
@@ -15452,7 +15467,7 @@ class SelectOption {
|
|
|
15452
15467
|
const option = (0, combi_1.seq)("OPTION", (0, combi_1.alt)("CP", expressions_1.Field));
|
|
15453
15468
|
const sign = (0, combi_1.seq)("SIGN", expressions_1.Field);
|
|
15454
15469
|
const memory = (0, combi_1.seq)("MEMORY ID", expressions_1.SimpleSource1);
|
|
15455
|
-
const match = (0, combi_1.seq)("MATCHCODE OBJECT", expressions_1.
|
|
15470
|
+
const match = (0, combi_1.seq)("MATCHCODE OBJECT", expressions_1.SimpleFieldChain);
|
|
15456
15471
|
const modif = (0, combi_1.seq)("MODIF ID", expressions_1.Modif);
|
|
15457
15472
|
const visible = (0, combi_1.seq)("VISIBLE LENGTH", expressions_1.Source);
|
|
15458
15473
|
const options = (0, combi_1.per)(def, option, sign, memory, match, visible, modif, "NO DATABASE SELECTION", "LOWER CASE", "NO-EXTENSION", "NO INTERVALS", "NO-DISPLAY", "OBLIGATORY");
|
|
@@ -16219,7 +16234,7 @@ const version_1 = __webpack_require__(/*! ../../../version */ "./node_modules/@a
|
|
|
16219
16234
|
class Submit {
|
|
16220
16235
|
getMatcher() {
|
|
16221
16236
|
const sign = (0, combi_1.seq)("SIGN", expressions_1.Source);
|
|
16222
|
-
const eq = (0, combi_1.alt)("=", "EQ", "IN", "NE", "CP", "GE", "LE", "INCL");
|
|
16237
|
+
const eq = (0, combi_1.alt)("=", "EQ", "IN", "NE", "CP", "GE", "LE", "INCL", "GT", "LT");
|
|
16223
16238
|
const compare = (0, combi_1.seq)(eq, expressions_1.Source);
|
|
16224
16239
|
const between = (0, combi_1.seq)("BETWEEN", expressions_1.Source, "AND", expressions_1.Source);
|
|
16225
16240
|
const selectionTable = (0, combi_1.seq)("WITH SELECTION-TABLE", expressions_1.Source);
|
|
@@ -17018,6 +17033,31 @@ exports.UpdateDatabase = UpdateDatabase;
|
|
|
17018
17033
|
|
|
17019
17034
|
/***/ }),
|
|
17020
17035
|
|
|
17036
|
+
/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/verification_message.js":
|
|
17037
|
+
/*!****************************************************************************************************!*\
|
|
17038
|
+
!*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/verification_message.js ***!
|
|
17039
|
+
\****************************************************************************************************/
|
|
17040
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
17041
|
+
|
|
17042
|
+
"use strict";
|
|
17043
|
+
|
|
17044
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
17045
|
+
exports.VerificationMessage = void 0;
|
|
17046
|
+
const combi_1 = __webpack_require__(/*! ../combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
|
|
17047
|
+
const expressions_1 = __webpack_require__(/*! ../expressions */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js");
|
|
17048
|
+
const version_1 = __webpack_require__(/*! ../../../version */ "./node_modules/@abaplint/core/build/src/version.js");
|
|
17049
|
+
class VerificationMessage {
|
|
17050
|
+
getMatcher() {
|
|
17051
|
+
const priority = (0, combi_1.seq)("PRIORITY", expressions_1.Source);
|
|
17052
|
+
const ret = (0, combi_1.seq)("VERIFICATION-MESSAGE", expressions_1.Source, expressions_1.Source, (0, combi_1.opt)(priority));
|
|
17053
|
+
return (0, combi_1.verNot)(version_1.Version.Cloud, ret);
|
|
17054
|
+
}
|
|
17055
|
+
}
|
|
17056
|
+
exports.VerificationMessage = VerificationMessage;
|
|
17057
|
+
//# sourceMappingURL=verification_message.js.map
|
|
17058
|
+
|
|
17059
|
+
/***/ }),
|
|
17060
|
+
|
|
17021
17061
|
/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/wait.js":
|
|
17022
17062
|
/*!************************************************************************************!*\
|
|
17023
17063
|
!*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/wait.js ***!
|
|
@@ -18121,15 +18161,11 @@ exports.Do = Do;
|
|
|
18121
18161
|
|
|
18122
18162
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
18123
18163
|
exports.DynproLogic = void 0;
|
|
18124
|
-
const
|
|
18164
|
+
const Structures = __webpack_require__(/*! ./ */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js");
|
|
18125
18165
|
const _combi_1 = __webpack_require__(/*! ./_combi */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js");
|
|
18126
|
-
const chain_1 = __webpack_require__(/*! ./chain */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/chain.js");
|
|
18127
18166
|
class DynproLogic {
|
|
18128
18167
|
getMatcher() {
|
|
18129
|
-
|
|
18130
|
-
const pbo = (0, _combi_1.star)((0, _combi_1.alt)((0, _combi_1.sta)(Statements.Module), (0, _combi_1.sta)(Statements.Field), (0, _combi_1.sta)(Statements.CallSubscreen)));
|
|
18131
|
-
const pov = (0, _combi_1.star)((0, _combi_1.sta)(Statements.Field));
|
|
18132
|
-
return (0, _combi_1.seq)((0, _combi_1.sta)(Statements.ProcessBeforeOutput), pbo, (0, _combi_1.sta)(Statements.ProcessAfterInput), pai, (0, _combi_1.opt)((0, _combi_1.seq)((0, _combi_1.sta)(Statements.ProcessOnValueRequest), pov)));
|
|
18168
|
+
return (0, _combi_1.seq)((0, _combi_1.sub)(Structures.ProcessBeforeOutput), (0, _combi_1.sub)(Structures.ProcessAfterInput), (0, _combi_1.opt)((0, _combi_1.sub)(Structures.ProcessOnValueRequest)));
|
|
18133
18169
|
}
|
|
18134
18170
|
}
|
|
18135
18171
|
exports.DynproLogic = DynproLogic;
|
|
@@ -18360,10 +18396,10 @@ __exportStar(__webpack_require__(/*! ./case_type */ "./node_modules/@abaplint/co
|
|
|
18360
18396
|
__exportStar(__webpack_require__(/*! ./case */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/case.js"), exports);
|
|
18361
18397
|
__exportStar(__webpack_require__(/*! ./catch_system_exceptions */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/catch_system_exceptions.js"), exports);
|
|
18362
18398
|
__exportStar(__webpack_require__(/*! ./catch */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/catch.js"), exports);
|
|
18399
|
+
__exportStar(__webpack_require__(/*! ./chain */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/chain.js"), exports);
|
|
18363
18400
|
__exportStar(__webpack_require__(/*! ./class_data */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/class_data.js"), exports);
|
|
18364
18401
|
__exportStar(__webpack_require__(/*! ./class_definition */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/class_definition.js"), exports);
|
|
18365
18402
|
__exportStar(__webpack_require__(/*! ./class_global */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/class_global.js"), exports);
|
|
18366
|
-
__exportStar(__webpack_require__(/*! ./chain */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/chain.js"), exports);
|
|
18367
18403
|
__exportStar(__webpack_require__(/*! ./class_implementation */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/class_implementation.js"), exports);
|
|
18368
18404
|
__exportStar(__webpack_require__(/*! ./cleanup */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/cleanup.js"), exports);
|
|
18369
18405
|
__exportStar(__webpack_require__(/*! ./constants */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/constants.js"), exports);
|
|
@@ -18388,6 +18424,9 @@ __exportStar(__webpack_require__(/*! ./module */ "./node_modules/@abaplint/core/
|
|
|
18388
18424
|
__exportStar(__webpack_require__(/*! ./normal */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/normal.js"), exports);
|
|
18389
18425
|
__exportStar(__webpack_require__(/*! ./on_change */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/on_change.js"), exports);
|
|
18390
18426
|
__exportStar(__webpack_require__(/*! ./private_section */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/private_section.js"), exports);
|
|
18427
|
+
__exportStar(__webpack_require__(/*! ./process_after_input */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/process_after_input.js"), exports);
|
|
18428
|
+
__exportStar(__webpack_require__(/*! ./process_before_output */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/process_before_output.js"), exports);
|
|
18429
|
+
__exportStar(__webpack_require__(/*! ./process_on_value_request */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/process_on_value_request.js"), exports);
|
|
18391
18430
|
__exportStar(__webpack_require__(/*! ./protected_section */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/protected_section.js"), exports);
|
|
18392
18431
|
__exportStar(__webpack_require__(/*! ./provide */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/provide.js"), exports);
|
|
18393
18432
|
__exportStar(__webpack_require__(/*! ./public_section */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/public_section.js"), exports);
|
|
@@ -18620,6 +18659,76 @@ exports.PrivateSection = PrivateSection;
|
|
|
18620
18659
|
|
|
18621
18660
|
/***/ }),
|
|
18622
18661
|
|
|
18662
|
+
/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/process_after_input.js":
|
|
18663
|
+
/*!***************************************************************************************************!*\
|
|
18664
|
+
!*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/process_after_input.js ***!
|
|
18665
|
+
\***************************************************************************************************/
|
|
18666
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
18667
|
+
|
|
18668
|
+
"use strict";
|
|
18669
|
+
|
|
18670
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
18671
|
+
exports.ProcessAfterInput = void 0;
|
|
18672
|
+
const Statements = __webpack_require__(/*! ../../2_statements/statements */ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js");
|
|
18673
|
+
const _combi_1 = __webpack_require__(/*! ./_combi */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js");
|
|
18674
|
+
const chain_1 = __webpack_require__(/*! ./chain */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/chain.js");
|
|
18675
|
+
class ProcessAfterInput {
|
|
18676
|
+
getMatcher() {
|
|
18677
|
+
const pai = (0, _combi_1.star)((0, _combi_1.alt)((0, _combi_1.sta)(Statements.Module), (0, _combi_1.sta)(Statements.Field), (0, _combi_1.sta)(Statements.CallSubscreen), (0, _combi_1.sub)(chain_1.Chain)));
|
|
18678
|
+
return (0, _combi_1.seq)((0, _combi_1.sta)(Statements.ProcessAfterInput), pai);
|
|
18679
|
+
}
|
|
18680
|
+
}
|
|
18681
|
+
exports.ProcessAfterInput = ProcessAfterInput;
|
|
18682
|
+
//# sourceMappingURL=process_after_input.js.map
|
|
18683
|
+
|
|
18684
|
+
/***/ }),
|
|
18685
|
+
|
|
18686
|
+
/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/process_before_output.js":
|
|
18687
|
+
/*!*****************************************************************************************************!*\
|
|
18688
|
+
!*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/process_before_output.js ***!
|
|
18689
|
+
\*****************************************************************************************************/
|
|
18690
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
18691
|
+
|
|
18692
|
+
"use strict";
|
|
18693
|
+
|
|
18694
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
18695
|
+
exports.ProcessBeforeOutput = void 0;
|
|
18696
|
+
const Statements = __webpack_require__(/*! ../../2_statements/statements */ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js");
|
|
18697
|
+
const _combi_1 = __webpack_require__(/*! ./_combi */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js");
|
|
18698
|
+
class ProcessBeforeOutput {
|
|
18699
|
+
getMatcher() {
|
|
18700
|
+
const pbo = (0, _combi_1.star)((0, _combi_1.alt)((0, _combi_1.sta)(Statements.Module), (0, _combi_1.sta)(Statements.Field), (0, _combi_1.sta)(Statements.CallSubscreen)));
|
|
18701
|
+
return (0, _combi_1.seq)((0, _combi_1.sta)(Statements.ProcessBeforeOutput), pbo);
|
|
18702
|
+
}
|
|
18703
|
+
}
|
|
18704
|
+
exports.ProcessBeforeOutput = ProcessBeforeOutput;
|
|
18705
|
+
//# sourceMappingURL=process_before_output.js.map
|
|
18706
|
+
|
|
18707
|
+
/***/ }),
|
|
18708
|
+
|
|
18709
|
+
/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/process_on_value_request.js":
|
|
18710
|
+
/*!********************************************************************************************************!*\
|
|
18711
|
+
!*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/process_on_value_request.js ***!
|
|
18712
|
+
\********************************************************************************************************/
|
|
18713
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
18714
|
+
|
|
18715
|
+
"use strict";
|
|
18716
|
+
|
|
18717
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
18718
|
+
exports.ProcessOnValueRequest = void 0;
|
|
18719
|
+
const Statements = __webpack_require__(/*! ../../2_statements/statements */ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js");
|
|
18720
|
+
const _combi_1 = __webpack_require__(/*! ./_combi */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js");
|
|
18721
|
+
class ProcessOnValueRequest {
|
|
18722
|
+
getMatcher() {
|
|
18723
|
+
const pov = (0, _combi_1.star)((0, _combi_1.sta)(Statements.Field));
|
|
18724
|
+
return (0, _combi_1.seq)((0, _combi_1.sta)(Statements.ProcessOnValueRequest), pov);
|
|
18725
|
+
}
|
|
18726
|
+
}
|
|
18727
|
+
exports.ProcessOnValueRequest = ProcessOnValueRequest;
|
|
18728
|
+
//# sourceMappingURL=process_on_value_request.js.map
|
|
18729
|
+
|
|
18730
|
+
/***/ }),
|
|
18731
|
+
|
|
18623
18732
|
/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/protected_section.js":
|
|
18624
18733
|
/*!*************************************************************************************************!*\
|
|
18625
18734
|
!*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/protected_section.js ***!
|
|
@@ -22133,6 +22242,9 @@ class TypeUtils {
|
|
|
22133
22242
|
}
|
|
22134
22243
|
return true;
|
|
22135
22244
|
}
|
|
22245
|
+
else if (target instanceof basic_1.SimpleType) {
|
|
22246
|
+
return this.isCharLikeStrict(source);
|
|
22247
|
+
}
|
|
22136
22248
|
else if (target instanceof basic_1.CLikeType) {
|
|
22137
22249
|
return this.isCharLikeStrict(source);
|
|
22138
22250
|
}
|
|
@@ -26280,10 +26392,55 @@ class Select {
|
|
|
26280
26392
|
for (const s of node.findDirectExpressions(Expressions.SQLOrderBy)) {
|
|
26281
26393
|
new sql_order_by_1.SQLOrderBy().runSyntax(s, input);
|
|
26282
26394
|
}
|
|
26395
|
+
if (this.isStrictMode(node)) {
|
|
26396
|
+
this.strictModeChecks(node, input);
|
|
26397
|
+
}
|
|
26283
26398
|
if (input.scope.getType() === _scope_type_1.ScopeType.OpenSQL) {
|
|
26284
26399
|
input.scope.pop(node.getLastToken().getEnd());
|
|
26285
26400
|
}
|
|
26286
26401
|
}
|
|
26402
|
+
// there are multiple rules, but gotta start somewhere
|
|
26403
|
+
isStrictMode(node) {
|
|
26404
|
+
const into = node.findDirectExpressionsMulti([Expressions.SQLIntoList, Expressions.SQLIntoStructure, Expressions.SQLIntoTable])[0];
|
|
26405
|
+
const where = node.findDirectExpression(Expressions.SQLCond);
|
|
26406
|
+
// INTO is after WHERE
|
|
26407
|
+
if (into && where && into.getFirstToken().getStart().isAfter(where.getFirstToken().getStart())) {
|
|
26408
|
+
return true;
|
|
26409
|
+
}
|
|
26410
|
+
// FIELDS is used
|
|
26411
|
+
if (node.findFirstExpression(Expressions.SQLFields)) {
|
|
26412
|
+
return true;
|
|
26413
|
+
}
|
|
26414
|
+
// any field is escaped with @
|
|
26415
|
+
for (const source of node.findAllExpressions(Expressions.SQLSource)) {
|
|
26416
|
+
if (source.getFirstToken().getStr() === "@") {
|
|
26417
|
+
return true;
|
|
26418
|
+
}
|
|
26419
|
+
}
|
|
26420
|
+
// comma used in FROM
|
|
26421
|
+
const fieldList = node.findFirstExpression(Expressions.SQLFieldList);
|
|
26422
|
+
if (fieldList && fieldList.findDirectTokenByText(",")) {
|
|
26423
|
+
return true;
|
|
26424
|
+
}
|
|
26425
|
+
return false;
|
|
26426
|
+
}
|
|
26427
|
+
strictModeChecks(node, input) {
|
|
26428
|
+
const sources = node.findAllExpressions(Expressions.SQLSource);
|
|
26429
|
+
for (const source of sources) {
|
|
26430
|
+
const first = source.getFirstChild();
|
|
26431
|
+
if ((first === null || first === void 0 ? void 0 : first.get()) instanceof Expressions.SQLAliasField) {
|
|
26432
|
+
continue;
|
|
26433
|
+
}
|
|
26434
|
+
else if ((first === null || first === void 0 ? void 0 : first.getFirstToken().getStr()) === "@") {
|
|
26435
|
+
continue;
|
|
26436
|
+
}
|
|
26437
|
+
else if ((first === null || first === void 0 ? void 0 : first.getChildren()[0].get()) instanceof Expressions.Constant) {
|
|
26438
|
+
continue;
|
|
26439
|
+
}
|
|
26440
|
+
const message = `SELECT: "${source.concatTokens()}" must be escaped with @ in strict mode`;
|
|
26441
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
26442
|
+
}
|
|
26443
|
+
}
|
|
26287
26444
|
handleInto(node, input, fields, dbSources) {
|
|
26288
26445
|
const intoTable = node.findDirectExpression(Expressions.SQLIntoTable);
|
|
26289
26446
|
if (intoTable) {
|
|
@@ -26584,9 +26741,10 @@ class Source {
|
|
|
26584
26741
|
if (foundType === undefined && s) {
|
|
26585
26742
|
return new basic_1.DataReference(s);
|
|
26586
26743
|
}
|
|
26587
|
-
else {
|
|
26588
|
-
return foundType;
|
|
26744
|
+
else if (foundType) {
|
|
26745
|
+
return new basic_1.DataReference(foundType);
|
|
26589
26746
|
}
|
|
26747
|
+
return undefined;
|
|
26590
26748
|
}
|
|
26591
26749
|
case "FILTER":
|
|
26592
26750
|
{
|
|
@@ -26613,7 +26771,12 @@ class Source {
|
|
|
26613
26771
|
return foundType;
|
|
26614
26772
|
}
|
|
26615
26773
|
case "EXACT":
|
|
26616
|
-
|
|
26774
|
+
{
|
|
26775
|
+
const foundType = this.determineType(node, input, targetType);
|
|
26776
|
+
new Source().runSyntax(node.findDirectExpression(Expressions.Source), input, foundType);
|
|
26777
|
+
this.addIfInferred(node, input, foundType);
|
|
26778
|
+
return foundType;
|
|
26779
|
+
}
|
|
26617
26780
|
case "VALUE":
|
|
26618
26781
|
{
|
|
26619
26782
|
const foundType = this.determineType(node, input, targetType);
|
|
@@ -30869,12 +31032,11 @@ class Loop {
|
|
|
30869
31032
|
const message = "No source type determined";
|
|
30870
31033
|
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
30871
31034
|
}
|
|
30872
|
-
return;
|
|
30873
31035
|
}
|
|
30874
31036
|
else if (sourceType instanceof basic_1.UnknownType) {
|
|
30875
31037
|
const message = "Loop, not a table type, " + sourceType.getError();
|
|
30876
31038
|
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
30877
|
-
|
|
31039
|
+
sourceType = new basic_1.VoidType("Loop, not a table type");
|
|
30878
31040
|
}
|
|
30879
31041
|
else if (sourceType instanceof basic_1.TableType
|
|
30880
31042
|
&& target === undefined
|
|
@@ -30882,7 +31044,6 @@ class Loop {
|
|
|
30882
31044
|
&& node.getChildren().length === 4) {
|
|
30883
31045
|
const message = "Loop, no header line";
|
|
30884
31046
|
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
30885
|
-
return;
|
|
30886
31047
|
}
|
|
30887
31048
|
else if (!(sourceType instanceof basic_1.TableType)
|
|
30888
31049
|
&& !(sourceType instanceof basic_1.AnyType)
|
|
@@ -30891,14 +31052,12 @@ class Loop {
|
|
|
30891
31052
|
&& concat.startsWith("LOOP AT GROUP ") === false) {
|
|
30892
31053
|
const message = "Loop, not a table type";
|
|
30893
31054
|
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
30894
|
-
return;
|
|
30895
31055
|
}
|
|
30896
31056
|
else if (loopTarget === undefined
|
|
30897
31057
|
&& sourceType instanceof basic_1.TableType
|
|
30898
31058
|
&& sourceType.isWithHeader() === false) {
|
|
30899
31059
|
const message = "Loop, no header";
|
|
30900
31060
|
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
30901
|
-
return;
|
|
30902
31061
|
}
|
|
30903
31062
|
const targetConcat = loopTarget === null || loopTarget === void 0 ? void 0 : loopTarget.concatTokens().toUpperCase();
|
|
30904
31063
|
if (sourceType instanceof basic_1.TableType) {
|
|
@@ -32106,6 +32265,7 @@ const Expressions = __webpack_require__(/*! ../../2_statements/expressions */ ".
|
|
|
32106
32265
|
const select_1 = __webpack_require__(/*! ../expressions/select */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/select.js");
|
|
32107
32266
|
class Select {
|
|
32108
32267
|
runSyntax(node, input) {
|
|
32268
|
+
// for UNION statements there are multiple select parts
|
|
32109
32269
|
const selects = node.findDirectExpressions(Expressions.Select);
|
|
32110
32270
|
for (let i = 0; i < selects.length; i++) {
|
|
32111
32271
|
const last = i === selects.length - 1;
|
|
@@ -34689,6 +34849,7 @@ exports.DECLARATION_STUFF = [
|
|
|
34689
34849
|
Statements.Parameter,
|
|
34690
34850
|
Statements.SelectionScreen,
|
|
34691
34851
|
Statements.ConstantBegin,
|
|
34852
|
+
Statements.Define,
|
|
34692
34853
|
];
|
|
34693
34854
|
//# sourceMappingURL=selection_events.js.map
|
|
34694
34855
|
|
|
@@ -39145,6 +39306,13 @@ class CDSDetermineTypes {
|
|
|
39145
39306
|
continue;
|
|
39146
39307
|
}
|
|
39147
39308
|
if ((source === null || source === void 0 ? void 0 : source.name) === undefined) {
|
|
39309
|
+
if (prefixUpper.startsWith("_")) {
|
|
39310
|
+
components.push({
|
|
39311
|
+
name: f.name,
|
|
39312
|
+
type: new basic_1.VoidType("DDLS:association"),
|
|
39313
|
+
});
|
|
39314
|
+
continue;
|
|
39315
|
+
}
|
|
39148
39316
|
components.push({
|
|
39149
39317
|
name: f.name,
|
|
39150
39318
|
type: new basic_1.UnknownType("CDS parser error, unknown source, " + ddlsName),
|
|
@@ -39408,6 +39576,9 @@ class CDSParser {
|
|
|
39408
39576
|
if (res === undefined || !(res[0] instanceof nodes_1.ExpressionNode)) {
|
|
39409
39577
|
res = combi_1.Combi.run(new Expressions.CDSDefineCustom(), tokens, version_1.defaultVersion);
|
|
39410
39578
|
}
|
|
39579
|
+
if (res === undefined || !(res[0] instanceof nodes_1.ExpressionNode)) {
|
|
39580
|
+
res = combi_1.Combi.run(new Expressions.CDSDefineTableFunction(), tokens, version_1.defaultVersion);
|
|
39581
|
+
}
|
|
39411
39582
|
if (res === undefined || !(res[0] instanceof nodes_1.ExpressionNode)) {
|
|
39412
39583
|
res = combi_1.Combi.run(new Expressions.CDSExtendView(), tokens, version_1.defaultVersion);
|
|
39413
39584
|
}
|
|
@@ -39483,7 +39654,8 @@ const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node
|
|
|
39483
39654
|
const cds_annotation_array_1 = __webpack_require__(/*! ./cds_annotation_array */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation_array.js");
|
|
39484
39655
|
class CDSAnnotation extends combi_1.Expression {
|
|
39485
39656
|
getRunnable() {
|
|
39486
|
-
|
|
39657
|
+
const nameWithSlash = (0, combi_1.seq)((0, combi_1.regex)(/^\w+$/), (0, combi_1.star)((0, combi_1.seq)("/", (0, combi_1.regex)(/^\w+$/))));
|
|
39658
|
+
return (0, combi_1.seq)((0, combi_1.regex)(/^@\w+$/), (0, combi_1.star)((0, combi_1.seq)(".", nameWithSlash)), (0, combi_1.opt)(":"), (0, combi_1.opt)((0, combi_1.alt)(cds_annotation_array_1.CDSAnnotationArray, _1.CDSAnnotationObject, _1.CDSAnnotationSimple)));
|
|
39487
39659
|
}
|
|
39488
39660
|
}
|
|
39489
39661
|
exports.CDSAnnotation = CDSAnnotation;
|
|
@@ -39580,14 +39752,14 @@ const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node
|
|
|
39580
39752
|
const cds_integer_1 = __webpack_require__(/*! ./cds_integer */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_integer.js");
|
|
39581
39753
|
class CDSArithmetics extends combi_1.Expression {
|
|
39582
39754
|
getRunnable() {
|
|
39583
|
-
const name = (0, combi_1.seq)(_1.CDSName, (0, combi_1.
|
|
39584
|
-
const val = (0, combi_1.
|
|
39755
|
+
const name = (0, combi_1.seq)(_1.CDSName, (0, combi_1.optPrio)((0, combi_1.seq)(".", _1.CDSName)));
|
|
39756
|
+
const val = (0, combi_1.altPrio)(cds_integer_1.CDSInteger, _1.CDSFunction, _1.CDSCase, _1.CDSCast, _1.CDSString, name);
|
|
39585
39757
|
const operator = (0, combi_1.altPrio)("+", "-", "*", "/");
|
|
39586
39758
|
const operatorValue = (0, combi_1.seq)(operator, val);
|
|
39587
|
-
const paren = (0, combi_1.seq)("(", val, (0, combi_1.
|
|
39588
|
-
const noParen = (0, combi_1.seq)(val, (0, combi_1.
|
|
39759
|
+
const paren = (0, combi_1.seq)("(", val, (0, combi_1.plusPrio)(operatorValue), ")");
|
|
39760
|
+
const noParen = (0, combi_1.seq)(val, (0, combi_1.plusPrio)(operatorValue));
|
|
39589
39761
|
// todo: this is pretty bad, it needs a rewrite
|
|
39590
|
-
return (0, combi_1.altPrio)((0, combi_1.seq)(paren, (0, combi_1.
|
|
39762
|
+
return (0, combi_1.altPrio)((0, combi_1.seq)(paren, (0, combi_1.starPrio)(operatorValue)), noParen);
|
|
39591
39763
|
}
|
|
39592
39764
|
}
|
|
39593
39765
|
exports.CDSArithmetics = CDSArithmetics;
|
|
@@ -39653,7 +39825,7 @@ exports.CDSCardinality = void 0;
|
|
|
39653
39825
|
const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
|
|
39654
39826
|
class CDSCardinality extends combi_1.Expression {
|
|
39655
39827
|
getRunnable() {
|
|
39656
|
-
const cardinality = (0, combi_1.seq)("[", (0, combi_1.alt)("0", "1"), (0, combi_1.opt)((0, combi_1.seq)(".", ".", (0, combi_1.alt)("0", "1", "*"))), "]");
|
|
39828
|
+
const cardinality = (0, combi_1.seq)("[", (0, combi_1.alt)("0", "1", "*"), (0, combi_1.opt)((0, combi_1.seq)(".", ".", (0, combi_1.alt)("0", "1", "*"))), "]");
|
|
39657
39829
|
return cardinality;
|
|
39658
39830
|
}
|
|
39659
39831
|
}
|
|
@@ -39677,10 +39849,11 @@ const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node
|
|
|
39677
39849
|
class CDSCase extends combi_1.Expression {
|
|
39678
39850
|
getRunnable() {
|
|
39679
39851
|
const name = (0, combi_1.seq)(_1.CDSName, (0, combi_1.optPrio)((0, combi_1.seq)(".", _1.CDSName)));
|
|
39680
|
-
const value = (0, combi_1.
|
|
39681
|
-
const
|
|
39682
|
-
const
|
|
39683
|
-
|
|
39852
|
+
const value = (0, combi_1.altPrio)(_1.CDSFunction, _1.CDSString, CDSCase, _1.CDSCast, _1.CDSArithmetics, name);
|
|
39853
|
+
const thenValue = (0, combi_1.altPrio)((0, combi_1.seq)("(", value, ")"), value);
|
|
39854
|
+
const simple = (0, combi_1.seq)((0, combi_1.altPrio)(_1.CDSFunction, name), (0, combi_1.plusPrio)((0, combi_1.seq)("WHEN", value, "THEN", thenValue)));
|
|
39855
|
+
const complex = (0, combi_1.plusPrio)((0, combi_1.seq)("WHEN", _1.CDSCondition, "THEN", thenValue));
|
|
39856
|
+
return (0, combi_1.seq)("CASE", (0, combi_1.altPrio)(complex, simple), (0, combi_1.optPrio)((0, combi_1.seq)("ELSE", value)), "END");
|
|
39684
39857
|
}
|
|
39685
39858
|
}
|
|
39686
39859
|
exports.CDSCase = CDSCase;
|
|
@@ -39702,8 +39875,8 @@ const _1 = __webpack_require__(/*! . */ "./node_modules/@abaplint/core/build/src
|
|
|
39702
39875
|
const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
|
|
39703
39876
|
class CDSCast extends combi_1.Expression {
|
|
39704
39877
|
getRunnable() {
|
|
39705
|
-
const name = (0, combi_1.seq)(_1.CDSName, (0, combi_1.
|
|
39706
|
-
return (0, combi_1.seq)("CAST", "(", (0, combi_1.
|
|
39878
|
+
const name = (0, combi_1.seq)(_1.CDSName, (0, combi_1.optPrio)((0, combi_1.seq)(".", _1.CDSName)));
|
|
39879
|
+
return (0, combi_1.seq)("CAST", "(", (0, combi_1.altPrio)(_1.CDSFunction, _1.CDSCase, _1.CDSAggregate, CDSCast, _1.CDSString, _1.CDSArithmetics, name), "AS", _1.CDSType, (0, combi_1.optPrio)((0, combi_1.seq)("PRESERVING", "TYPE")), ")");
|
|
39707
39880
|
}
|
|
39708
39881
|
}
|
|
39709
39882
|
exports.CDSCast = CDSCast;
|
|
@@ -39749,13 +39922,15 @@ const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node
|
|
|
39749
39922
|
const cds_integer_1 = __webpack_require__(/*! ./cds_integer */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_integer.js");
|
|
39750
39923
|
class CDSCondition extends combi_1.Expression {
|
|
39751
39924
|
getRunnable() {
|
|
39752
|
-
const name = (0, combi_1.seq)(_1.CDSName, (0, combi_1.optPrio)((0, combi_1.seq)(".", (0, combi_1.
|
|
39753
|
-
const left = (0, combi_1.
|
|
39754
|
-
const
|
|
39755
|
-
const
|
|
39756
|
-
const
|
|
39925
|
+
const name = (0, combi_1.seq)(_1.CDSName, (0, combi_1.optPrio)((0, combi_1.seq)(".", (0, combi_1.altPrio)(_1.CDSString, _1.CDSName))));
|
|
39926
|
+
const left = (0, combi_1.altPrio)(_1.CDSString, _1.CDSFunction, _1.CDSAggregate, name);
|
|
39927
|
+
const operators = (0, combi_1.altPrio)("=", (0, combi_1.seq)("!", "="), (0, combi_1.seq)("<", ">"), (0, combi_1.seq)(">", "="), (0, combi_1.seq)("<", "="), "<", ">", "LIKE", "NOT LIKE");
|
|
39928
|
+
const compare = (0, combi_1.seq)(operators, (0, combi_1.altPrio)(left, cds_integer_1.CDSInteger));
|
|
39929
|
+
const is = (0, combi_1.seq)("IS", (0, combi_1.optPrio)("NOT"), (0, combi_1.altPrio)("INITIAL", "NULL"));
|
|
39930
|
+
const between = (0, combi_1.seq)("BETWEEN", left, "AND", left);
|
|
39931
|
+
const condition = (0, combi_1.seq)((0, combi_1.optPrio)("NOT"), left, (0, combi_1.altPrio)(compare, is, between));
|
|
39757
39932
|
const paren = (0, combi_1.seq)("(", CDSCondition, ")");
|
|
39758
|
-
return (0, combi_1.seq)((0, combi_1.
|
|
39933
|
+
return (0, combi_1.seq)((0, combi_1.altPrio)(condition, paren), (0, combi_1.starPrio)((0, combi_1.seq)((0, combi_1.altPrio)("AND", "OR"), (0, combi_1.altPrio)(condition, paren))));
|
|
39759
39934
|
}
|
|
39760
39935
|
}
|
|
39761
39936
|
exports.CDSCondition = CDSCondition;
|
|
@@ -39835,6 +40010,30 @@ exports.CDSDefineProjection = CDSDefineProjection;
|
|
|
39835
40010
|
|
|
39836
40011
|
/***/ }),
|
|
39837
40012
|
|
|
40013
|
+
/***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_table_function.js":
|
|
40014
|
+
/*!********************************************************************************************!*\
|
|
40015
|
+
!*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_table_function.js ***!
|
|
40016
|
+
\********************************************************************************************/
|
|
40017
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
40018
|
+
|
|
40019
|
+
"use strict";
|
|
40020
|
+
|
|
40021
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
40022
|
+
exports.CDSDefineTableFunction = void 0;
|
|
40023
|
+
const _1 = __webpack_require__(/*! . */ "./node_modules/@abaplint/core/build/src/cds/expressions/index.js");
|
|
40024
|
+
const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
|
|
40025
|
+
const cds_name_1 = __webpack_require__(/*! ./cds_name */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_name.js");
|
|
40026
|
+
class CDSDefineTableFunction extends combi_1.Expression {
|
|
40027
|
+
getRunnable() {
|
|
40028
|
+
const methodName = (0, combi_1.seq)(cds_name_1.CDSName, "=", ">", cds_name_1.CDSName);
|
|
40029
|
+
return (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), (0, combi_1.str)("DEFINE TABLE FUNCTION"), cds_name_1.CDSName, (0, combi_1.optPrio)(_1.CDSWithParameters), (0, combi_1.str)("RETURNS {"), (0, combi_1.plus)((0, combi_1.seq)((0, combi_1.optPrio)("KEY"), cds_name_1.CDSName, ":", _1.CDSType, ";")), (0, combi_1.str)("} IMPLEMENTED BY METHOD"), methodName, (0, combi_1.opt)(";"));
|
|
40030
|
+
}
|
|
40031
|
+
}
|
|
40032
|
+
exports.CDSDefineTableFunction = CDSDefineTableFunction;
|
|
40033
|
+
//# sourceMappingURL=cds_define_table_function.js.map
|
|
40034
|
+
|
|
40035
|
+
/***/ }),
|
|
40036
|
+
|
|
39838
40037
|
/***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_view.js":
|
|
39839
40038
|
/*!**********************************************************************************!*\
|
|
39840
40039
|
!*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_view.js ***!
|
|
@@ -39877,7 +40076,7 @@ const cds_as_1 = __webpack_require__(/*! ./cds_as */ "./node_modules/@abaplint/c
|
|
|
39877
40076
|
const cds_cast_1 = __webpack_require__(/*! ./cds_cast */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_cast.js");
|
|
39878
40077
|
class CDSElement extends combi_1.Expression {
|
|
39879
40078
|
getRunnable() {
|
|
39880
|
-
return (0, combi_1.seq)((0, combi_1.starPrio)(_1.CDSAnnotation), (0, combi_1.optPrio)("KEY"), (0, combi_1.altPrio)(_1.CDSAggregate, _1.CDSString, _1.CDSArithmetics, _1.CDSFunction, cds_cast_1.CDSCast, _1.CDSCase, (0, combi_1.seq)(_1.CDSName, ": REDIRECTED TO", (0, combi_1.opt)((0, combi_1.alt)("PARENT", "COMPOSITION CHILD")), _1.CDSName), _1.CDSPrefixedName,
|
|
40079
|
+
return (0, combi_1.seq)((0, combi_1.starPrio)(_1.CDSAnnotation), (0, combi_1.optPrio)("KEY"), (0, combi_1.altPrio)(_1.CDSAggregate, _1.CDSString, _1.CDSArithmetics, _1.CDSFunction, cds_cast_1.CDSCast, _1.CDSCase, (0, combi_1.seq)("(", _1.CDSCase, ")"), (0, combi_1.seq)(_1.CDSName, ": REDIRECTED TO", (0, combi_1.opt)((0, combi_1.alt)("PARENT", "COMPOSITION CHILD")), _1.CDSName), _1.CDSPrefixedName, _1.CDSInteger), (0, combi_1.opt)(cds_as_1.CDSAs));
|
|
39881
40080
|
}
|
|
39882
40081
|
}
|
|
39883
40082
|
exports.CDSElement = CDSElement;
|
|
@@ -39953,6 +40152,13 @@ class CDSFunction extends combi_1.Expression {
|
|
|
39953
40152
|
const abap_system_timezone = (0, combi_1.seq)("ABAP_SYSTEM_TIMEZONE", "(", _1.CDSFunctionInput, ",", _1.CDSFunctionInput, ")");
|
|
39954
40153
|
const abap_user_timezone = (0, combi_1.seq)("ABAP_USER_TIMEZONE", "(", _1.CDSFunctionInput, ",", _1.CDSFunctionInput, ",", _1.CDSFunctionInput, ")");
|
|
39955
40154
|
const mod = (0, combi_1.seq)("MOD", "(", _1.CDSFunctionInput, ",", _1.CDSFunctionInput, ")");
|
|
40155
|
+
const replace = (0, combi_1.seq)("REPLACE", "(", _1.CDSFunctionInput, ",", _1.CDSFunctionInput, ",", _1.CDSFunctionInput, ")");
|
|
40156
|
+
const lpad = (0, combi_1.seq)("LPAD", "(", _1.CDSFunctionInput, ",", _1.CDSFunctionInput, ",", _1.CDSFunctionInput, ")");
|
|
40157
|
+
const rpad = (0, combi_1.seq)("RPAD", "(", _1.CDSFunctionInput, ",", _1.CDSFunctionInput, ",", _1.CDSFunctionInput, ")");
|
|
40158
|
+
const instr = (0, combi_1.seq)("INSTR", "(", _1.CDSFunctionInput, ",", _1.CDSFunctionInput, ")");
|
|
40159
|
+
const length = (0, combi_1.seq)("LENGTH", "(", _1.CDSFunctionInput, ")");
|
|
40160
|
+
const ltrim = (0, combi_1.seq)("LTRIM", "(", _1.CDSFunctionInput, ",", _1.CDSFunctionInput, ")");
|
|
40161
|
+
const rtrim = (0, combi_1.seq)("RTRIM", "(", _1.CDSFunctionInput, ",", _1.CDSFunctionInput, ")");
|
|
39956
40162
|
const left = (0, combi_1.seq)("LEFT", "(", _1.CDSFunctionInput, ",", _1.CDSFunctionInput, ")");
|
|
39957
40163
|
const right = (0, combi_1.seq)("RIGHT", "(", _1.CDSFunctionInput, ",", _1.CDSFunctionInput, ")");
|
|
39958
40164
|
const conversionInput = (0, combi_1.seq)(_1.CDSName, "=", ">", _1.CDSFunctionInput);
|
|
@@ -39960,7 +40166,7 @@ class CDSFunction extends combi_1.Expression {
|
|
|
39960
40166
|
const unitConversion = (0, combi_1.seq)("UNIT_CONVERSION", "(", conversionInputs, ")");
|
|
39961
40167
|
const currencyConversion = (0, combi_1.seq)("CURRENCY_CONVERSION", "(", conversionInputs, ")");
|
|
39962
40168
|
const decimalShift = (0, combi_1.seq)("DECIMAL_SHIFT", "(", conversionInputs, ")");
|
|
39963
|
-
return (0, combi_1.altPrio)(substring, coalesce, tstmp_to_dats, concat, tstmp_to_tims, upper, lower, abs, ceil, floor, round, div, division, concat_with_space, dats_is_valid, dats_days_between, tstmp_add_seconds, tstmp_seconds_between, tstmp_current_utctimestamp, tstmp_is_valid, abap_system_timezone, abap_user_timezone, bintohex, hextobin, dats_add_days, dats_add_months, tstmp_to_dst, dats_tims_to_tstmp, mod, left, right, unitConversion, currencyConversion, decimalShift);
|
|
40169
|
+
return (0, combi_1.altPrio)(substring, coalesce, tstmp_to_dats, concat, tstmp_to_tims, upper, lower, abs, ceil, floor, round, div, division, concat_with_space, dats_is_valid, dats_days_between, tstmp_add_seconds, tstmp_seconds_between, tstmp_current_utctimestamp, tstmp_is_valid, abap_system_timezone, abap_user_timezone, bintohex, hextobin, dats_add_days, dats_add_months, tstmp_to_dst, dats_tims_to_tstmp, mod, left, right, lpad, rpad, instr, length, ltrim, rtrim, replace, unitConversion, currencyConversion, decimalShift);
|
|
39964
40170
|
}
|
|
39965
40171
|
}
|
|
39966
40172
|
exports.CDSFunction = CDSFunction;
|
|
@@ -39983,7 +40189,7 @@ const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node
|
|
|
39983
40189
|
class CDSFunctionInput extends combi_1.Expression {
|
|
39984
40190
|
getRunnable() {
|
|
39985
40191
|
const qualified = (0, combi_1.seq)(_1.CDSName, (0, combi_1.opt)(_1.CDSParameters), (0, combi_1.starPrio)((0, combi_1.seq)(".", _1.CDSName, (0, combi_1.opt)(_1.CDSParameters))));
|
|
39986
|
-
const input = (0, combi_1.altPrio)(_1.CDSCast, _1.CDSFunction, _1.CDSArithmetics, _1.CDSCase, _1.CDSString, qualified,
|
|
40192
|
+
const input = (0, combi_1.altPrio)(_1.CDSCast, _1.CDSFunction, _1.CDSArithmetics, _1.CDSCase, _1.CDSString, qualified, _1.CDSInteger);
|
|
39987
40193
|
return input;
|
|
39988
40194
|
}
|
|
39989
40195
|
}
|
|
@@ -40050,7 +40256,7 @@ exports.CDSInteger = void 0;
|
|
|
40050
40256
|
const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
|
|
40051
40257
|
class CDSInteger extends combi_1.Expression {
|
|
40052
40258
|
getRunnable() {
|
|
40053
|
-
return (0, combi_1.regex)(/^\d+$/);
|
|
40259
|
+
return (0, combi_1.seq)((0, combi_1.opt)("-"), (0, combi_1.regex)(/^\d+$/));
|
|
40054
40260
|
}
|
|
40055
40261
|
}
|
|
40056
40262
|
exports.CDSInteger = CDSInteger;
|
|
@@ -40073,7 +40279,9 @@ const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node
|
|
|
40073
40279
|
const cds_condition_1 = __webpack_require__(/*! ./cds_condition */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_condition.js");
|
|
40074
40280
|
class CDSJoin extends combi_1.Expression {
|
|
40075
40281
|
getRunnable() {
|
|
40076
|
-
|
|
40282
|
+
const cond = (0, combi_1.seq)(_1.CDSSource, "ON", cds_condition_1.CDSCondition);
|
|
40283
|
+
const foo = (0, combi_1.altPrio)((0, combi_1.seq)("(", cond, ")"), cond);
|
|
40284
|
+
return (0, combi_1.seq)((0, combi_1.optPrio)((0, combi_1.altPrio)("LEFT OUTER TO ONE", "LEFT OUTER", "INNER")), "JOIN", foo);
|
|
40077
40285
|
}
|
|
40078
40286
|
}
|
|
40079
40287
|
exports.CDSJoin = CDSJoin;
|
|
@@ -40095,7 +40303,7 @@ const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node
|
|
|
40095
40303
|
class CDSName extends combi_1.Expression {
|
|
40096
40304
|
getRunnable() {
|
|
40097
40305
|
const pre = (0, combi_1.seq)("/", (0, combi_1.regex)(/^[\w_]+$/), "/");
|
|
40098
|
-
return (0, combi_1.seq)((0, combi_1.
|
|
40306
|
+
return (0, combi_1.seq)((0, combi_1.optPrio)(":"), (0, combi_1.optPrio)(pre), (0, combi_1.regex)(/^\$?#?[\w_]+$/));
|
|
40099
40307
|
}
|
|
40100
40308
|
}
|
|
40101
40309
|
exports.CDSName = CDSName;
|
|
@@ -40237,8 +40445,9 @@ class CDSSelect extends combi_1.Expression {
|
|
|
40237
40445
|
getRunnable() {
|
|
40238
40446
|
const fields = (0, combi_1.seq)((0, combi_1.star)((0, combi_1.seq)(_1.CDSElement, ",")), _1.CDSElement);
|
|
40239
40447
|
const distinct = (0, combi_1.str)("DISTINCT");
|
|
40240
|
-
const
|
|
40241
|
-
|
|
40448
|
+
const elementList = (0, combi_1.seq)(_1.CDSElement, (0, combi_1.starPrio)((0, combi_1.seq)(",", _1.CDSElement)));
|
|
40449
|
+
const elements = (0, combi_1.seq)((0, combi_1.str)("{"), (0, combi_1.altPrio)("*", elementList), (0, combi_1.str)("}"));
|
|
40450
|
+
return (0, combi_1.seq)("SELECT", (0, combi_1.optPrio)(distinct), (0, combi_1.opt)((0, combi_1.alt)("*", fields)), "FROM", _1.CDSSource, (0, combi_1.star)(cds_join_1.CDSJoin), (0, combi_1.star)(_1.CDSComposition), (0, combi_1.star)(cds_association_1.CDSAssociation), (0, combi_1.star)(_1.CDSComposition), (0, combi_1.opt)(elements), (0, combi_1.optPrio)(_1.CDSWhere), (0, combi_1.optPrio)(_1.CDSGroupBy), (0, combi_1.optPrio)(_1.CDSHaving), (0, combi_1.optPrio)((0, combi_1.seq)("UNION", (0, combi_1.optPrio)("ALL"), CDSSelect)));
|
|
40242
40451
|
}
|
|
40243
40452
|
}
|
|
40244
40453
|
exports.CDSSelect = CDSSelect;
|
|
@@ -40260,7 +40469,7 @@ const _1 = __webpack_require__(/*! . */ "./node_modules/@abaplint/core/build/src
|
|
|
40260
40469
|
const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
|
|
40261
40470
|
class CDSSource extends combi_1.Expression {
|
|
40262
40471
|
getRunnable() {
|
|
40263
|
-
return (0, combi_1.seq)(_1.CDSName, (0, combi_1.
|
|
40472
|
+
return (0, combi_1.seq)(_1.CDSName, (0, combi_1.optPrio)(_1.CDSParametersSelect), (0, combi_1.optPrio)(_1.CDSAs));
|
|
40264
40473
|
}
|
|
40265
40474
|
}
|
|
40266
40475
|
exports.CDSSource = CDSSource;
|
|
@@ -40349,7 +40558,7 @@ const _1 = __webpack_require__(/*! . */ "./node_modules/@abaplint/core/build/src
|
|
|
40349
40558
|
const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
|
|
40350
40559
|
class CDSWithParameters extends combi_1.Expression {
|
|
40351
40560
|
getRunnable() {
|
|
40352
|
-
const param = (0, combi_1.seq)(_1.CDSName, ":", _1.CDSType);
|
|
40561
|
+
const param = (0, combi_1.seq)((0, combi_1.starPrio)(_1.CDSAnnotation), _1.CDSName, ":", _1.CDSType);
|
|
40353
40562
|
return (0, combi_1.seq)("WITH PARAMETERS", param, (0, combi_1.star)((0, combi_1.seq)(",", param)));
|
|
40354
40563
|
}
|
|
40355
40564
|
}
|
|
@@ -40398,11 +40607,12 @@ __exportStar(__webpack_require__(/*! ./cds_condition */ "./node_modules/@abaplin
|
|
|
40398
40607
|
__exportStar(__webpack_require__(/*! ./cds_define_abstract */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_abstract.js"), exports);
|
|
40399
40608
|
__exportStar(__webpack_require__(/*! ./cds_define_custom */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_custom.js"), exports);
|
|
40400
40609
|
__exportStar(__webpack_require__(/*! ./cds_define_projection */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_projection.js"), exports);
|
|
40610
|
+
__exportStar(__webpack_require__(/*! ./cds_define_table_function */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_table_function.js"), exports);
|
|
40401
40611
|
__exportStar(__webpack_require__(/*! ./cds_define_view */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_view.js"), exports);
|
|
40402
40612
|
__exportStar(__webpack_require__(/*! ./cds_element */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_element.js"), exports);
|
|
40403
40613
|
__exportStar(__webpack_require__(/*! ./cds_extend_view */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_extend_view.js"), exports);
|
|
40404
|
-
__exportStar(__webpack_require__(/*! ./cds_function */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_function.js"), exports);
|
|
40405
40614
|
__exportStar(__webpack_require__(/*! ./cds_function_input */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_function_input.js"), exports);
|
|
40615
|
+
__exportStar(__webpack_require__(/*! ./cds_function */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_function.js"), exports);
|
|
40406
40616
|
__exportStar(__webpack_require__(/*! ./cds_group_by */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_group_by.js"), exports);
|
|
40407
40617
|
__exportStar(__webpack_require__(/*! ./cds_having */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_having.js"), exports);
|
|
40408
40618
|
__exportStar(__webpack_require__(/*! ./cds_integer */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_integer.js"), exports);
|
|
@@ -43000,17 +43210,48 @@ const syntax_1 = __webpack_require__(/*! ../abap/5_syntax/syntax */ "./node_modu
|
|
|
43000
43210
|
const _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ "./node_modules/@abaplint/core/build/src/objects/_abap_object.js");
|
|
43001
43211
|
const dump_scope_1 = __webpack_require__(/*! ./dump_scope */ "./node_modules/@abaplint/core/build/src/lsp/dump_scope.js");
|
|
43002
43212
|
const virtual_position_1 = __webpack_require__(/*! ../virtual_position */ "./node_modules/@abaplint/core/build/src/virtual_position.js");
|
|
43213
|
+
const objects_1 = __webpack_require__(/*! ../objects */ "./node_modules/@abaplint/core/build/src/objects/index.js");
|
|
43214
|
+
const cds_lexer_1 = __webpack_require__(/*! ../cds/cds_lexer */ "./node_modules/@abaplint/core/build/src/cds/cds_lexer.js");
|
|
43003
43215
|
class Help {
|
|
43004
43216
|
static find(reg, textDocument, position) {
|
|
43005
|
-
const
|
|
43217
|
+
const abapFile = _lsp_utils_1.LSPUtils.getABAPFile(reg, textDocument.uri);
|
|
43218
|
+
if (abapFile !== undefined) {
|
|
43219
|
+
return this.dumpABAP(abapFile, reg, textDocument, position);
|
|
43220
|
+
}
|
|
43221
|
+
const file = reg.getFileByName(textDocument.uri);
|
|
43006
43222
|
if (file === undefined) {
|
|
43007
|
-
return "
|
|
43223
|
+
return "File not found: " + textDocument.uri;
|
|
43008
43224
|
}
|
|
43009
|
-
|
|
43010
|
-
|
|
43225
|
+
const obj = reg.findObjectForFile(file);
|
|
43226
|
+
if (obj instanceof objects_1.DataDefinition) {
|
|
43227
|
+
return this.dumpDDLS(obj, reg);
|
|
43011
43228
|
}
|
|
43229
|
+
return "Unhandled object type: " + obj.getType();
|
|
43012
43230
|
}
|
|
43013
43231
|
/////////////////////////////////////////////////
|
|
43232
|
+
static dumpDDLS(obj, reg) {
|
|
43233
|
+
let content = "";
|
|
43234
|
+
content += "<h1>" + obj.getType() + " " + obj.getName() + "</h1>\n";
|
|
43235
|
+
content += obj.getDescription() + "\n";
|
|
43236
|
+
content += obj.getParsingIssues().map(i => i.getMessage()).join("<br>\n");
|
|
43237
|
+
content += `<hr>\n`;
|
|
43238
|
+
const parsed = obj.getParsedData();
|
|
43239
|
+
parsed === null || parsed === void 0 ? true : delete parsed.tree;
|
|
43240
|
+
content += `<pre>` + JSON.stringify(parsed, null, 2) + "</pre>\n";
|
|
43241
|
+
content += `<hr>\n`;
|
|
43242
|
+
content += `<pre>` + obj.parseType(reg).toText(0) + "</pre>\n";
|
|
43243
|
+
content += `<hr>\n`;
|
|
43244
|
+
const file = obj.findSourceFile();
|
|
43245
|
+
if (file) {
|
|
43246
|
+
const tokens = cds_lexer_1.CDSLexer.run(file);
|
|
43247
|
+
content += `<h3>Tokens</h3>\n<pre>\n`;
|
|
43248
|
+
for (const t of tokens) {
|
|
43249
|
+
content += JSON.stringify(t) + "\n";
|
|
43250
|
+
}
|
|
43251
|
+
content += `</pre>\n`;
|
|
43252
|
+
}
|
|
43253
|
+
return content;
|
|
43254
|
+
}
|
|
43014
43255
|
static dumpABAP(file, reg, textDocument, position) {
|
|
43015
43256
|
let content = "";
|
|
43016
43257
|
content = `
|
|
@@ -44397,7 +44638,10 @@ class ABAPObject extends _abstract_object_1.AbstractObject {
|
|
|
44397
44638
|
}
|
|
44398
44639
|
// uri fallback,
|
|
44399
44640
|
for (const file of this.getABAPFiles()) {
|
|
44400
|
-
if (file.getFilename().
|
|
44641
|
+
if (file.getFilename().includes(".prog.screen_")) {
|
|
44642
|
+
continue;
|
|
44643
|
+
}
|
|
44644
|
+
else if (file.getFilename().endsWith(".abap")) {
|
|
44401
44645
|
return file;
|
|
44402
44646
|
}
|
|
44403
44647
|
}
|
|
@@ -47158,13 +47402,13 @@ class FunctionGroup extends _abap_object_1.ABAPObject {
|
|
|
47158
47402
|
if (namespaced) {
|
|
47159
47403
|
search = search.replace(/\//g, "#");
|
|
47160
47404
|
}
|
|
47161
|
-
if ((i.startsWith("L") || namespaced) && f.getFilename().includes(search.toLowerCase())) {
|
|
47405
|
+
if ((i.startsWith("L") || namespaced) && f.getFilename().includes(search.toLowerCase() + ".")) {
|
|
47162
47406
|
ret.push({ file: f, name: i });
|
|
47163
47407
|
}
|
|
47164
47408
|
// fix for URL encoded? Uris
|
|
47165
47409
|
if (namespaced) {
|
|
47166
47410
|
search = i.replace(/\//g, "%23");
|
|
47167
|
-
if (f.getFilename().includes(search.toLowerCase())) {
|
|
47411
|
+
if (f.getFilename().includes(search.toLowerCase() + ".")) {
|
|
47168
47412
|
ret.push({ file: f, name: i });
|
|
47169
47413
|
}
|
|
47170
47414
|
}
|
|
@@ -51370,6 +51614,9 @@ class TableType extends _abstract_object_1.AbstractObject {
|
|
|
51370
51614
|
return;
|
|
51371
51615
|
}
|
|
51372
51616
|
const values = parsed.abapGit["asx:abap"]["asx:values"];
|
|
51617
|
+
if (values === undefined) {
|
|
51618
|
+
return;
|
|
51619
|
+
}
|
|
51373
51620
|
const dd40v = values.DD40V;
|
|
51374
51621
|
this.parsedXML.rowtype = dd40v.ROWTYPE ? dd40v.ROWTYPE : "";
|
|
51375
51622
|
this.parsedXML.rowkind = dd40v.ROWKIND ? dd40v.ROWKIND : "";
|
|
@@ -52179,6 +52426,7 @@ class Indent {
|
|
|
52179
52426
|
|| type instanceof Statements.EndModule
|
|
52180
52427
|
|| type instanceof Statements.EndSelect
|
|
52181
52428
|
|| type instanceof Statements.EndMethod
|
|
52429
|
+
|| type instanceof Statements.EndChain
|
|
52182
52430
|
|| type instanceof Statements.EndAt
|
|
52183
52431
|
|| type instanceof Statements.Else
|
|
52184
52432
|
|| type instanceof Statements.EndExec
|
|
@@ -52287,6 +52535,7 @@ class Indent {
|
|
|
52287
52535
|
|| type instanceof Statements.Else
|
|
52288
52536
|
|| type instanceof Statements.ElseIf
|
|
52289
52537
|
|| type instanceof Statements.MethodImplementation
|
|
52538
|
+
|| type instanceof Statements.Chain
|
|
52290
52539
|
|| type instanceof Statements.TestInjection
|
|
52291
52540
|
|| type instanceof Statements.TestSeam
|
|
52292
52541
|
|| (this.options.selectionScreenBlockIndentation === true
|
|
@@ -52492,7 +52741,7 @@ class Registry {
|
|
|
52492
52741
|
}
|
|
52493
52742
|
static abaplintVersion() {
|
|
52494
52743
|
// magic, see build script "version.sh"
|
|
52495
|
-
return "2.113.
|
|
52744
|
+
return "2.113.99";
|
|
52496
52745
|
}
|
|
52497
52746
|
getDDICReferences() {
|
|
52498
52747
|
return this.ddicReferences;
|
|
@@ -54634,6 +54883,7 @@ const _irule_1 = __webpack_require__(/*! ./_irule */ "./node_modules/@abaplint/c
|
|
|
54634
54883
|
const version_1 = __webpack_require__(/*! ../version */ "./node_modules/@abaplint/core/build/src/version.js");
|
|
54635
54884
|
const _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ "./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js");
|
|
54636
54885
|
const objects_1 = __webpack_require__(/*! ../objects */ "./node_modules/@abaplint/core/build/src/objects/index.js");
|
|
54886
|
+
const expressions_1 = __webpack_require__(/*! ../cds/expressions */ "./node_modules/@abaplint/core/build/src/cds/expressions/index.js");
|
|
54637
54887
|
class CDSLegacyViewConf extends _basic_rule_config_1.BasicRuleConfig {
|
|
54638
54888
|
}
|
|
54639
54889
|
exports.CDSLegacyViewConf = CDSLegacyViewConf;
|
|
@@ -54670,19 +54920,17 @@ v755 and up`,
|
|
|
54670
54920
|
&& this.reg.getConfig().getVersion() !== version_1.Version.Cloud) {
|
|
54671
54921
|
return [];
|
|
54672
54922
|
}
|
|
54673
|
-
if (o.getType() !== "DDLS") {
|
|
54923
|
+
if (o.getType() !== "DDLS" || !(o instanceof objects_1.DataDefinition)) {
|
|
54674
54924
|
return [];
|
|
54675
54925
|
}
|
|
54676
|
-
|
|
54677
|
-
|
|
54678
|
-
|
|
54679
|
-
|
|
54680
|
-
|
|
54681
|
-
|
|
54682
|
-
|
|
54683
|
-
|
|
54684
|
-
issues.push(issue_1.Issue.atRow(file, 1, "CDS Legacy View", this.getMetadata().key, this.getConfig().severity));
|
|
54685
|
-
}
|
|
54926
|
+
const tree = o.getTree();
|
|
54927
|
+
if (tree === undefined) {
|
|
54928
|
+
return []; // parser error
|
|
54929
|
+
}
|
|
54930
|
+
if (tree.get() instanceof expressions_1.CDSDefineView && tree.findDirectTokenByText("ENTITY") === undefined) {
|
|
54931
|
+
const file = o.findSourceFile();
|
|
54932
|
+
if (file) {
|
|
54933
|
+
issues.push(issue_1.Issue.atRow(file, 1, "CDS Legacy View", this.getMetadata().key, this.getConfig().severity));
|
|
54686
54934
|
}
|
|
54687
54935
|
}
|
|
54688
54936
|
return issues;
|
|
@@ -54739,7 +54987,9 @@ class CDSParserError {
|
|
|
54739
54987
|
const hasError = object.hasParserError();
|
|
54740
54988
|
const file = object.findSourceFile();
|
|
54741
54989
|
if (hasError === true && file) {
|
|
54742
|
-
|
|
54990
|
+
const empty = file.getRaw().length === 0 ? ", empty file" : "";
|
|
54991
|
+
const message = "CDS Parser error" + empty;
|
|
54992
|
+
issues.push(issue_1.Issue.atRow(file, 1, message, this.getMetadata().key, this.getConfig().severity));
|
|
54743
54993
|
}
|
|
54744
54994
|
}
|
|
54745
54995
|
return issues;
|
|
@@ -57578,32 +57828,32 @@ exports.DoubleSpace = DoubleSpace;
|
|
|
57578
57828
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
57579
57829
|
exports.Downport = exports.DownportConf = void 0;
|
|
57580
57830
|
/* eslint-disable max-len */
|
|
57581
|
-
const
|
|
57831
|
+
const crypto = __webpack_require__(/*! crypto */ "crypto");
|
|
57832
|
+
const tokens_1 = __webpack_require__(/*! ../abap/1_lexer/tokens */ "./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js");
|
|
57582
57833
|
const Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js");
|
|
57583
|
-
const
|
|
57584
|
-
const
|
|
57585
|
-
const issue_1 = __webpack_require__(/*! ../issue */ "./node_modules/@abaplint/core/build/src/issue.js");
|
|
57586
|
-
const _irule_1 = __webpack_require__(/*! ./_irule */ "./node_modules/@abaplint/core/build/src/rules/_irule.js");
|
|
57834
|
+
const Statements = __webpack_require__(/*! ../abap/2_statements/statements */ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js");
|
|
57835
|
+
const statements_1 = __webpack_require__(/*! ../abap/2_statements/statements */ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js");
|
|
57587
57836
|
const _statement_1 = __webpack_require__(/*! ../abap/2_statements/statements/_statement */ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js");
|
|
57588
|
-
const
|
|
57589
|
-
const
|
|
57590
|
-
const position_1 = __webpack_require__(/*! ../position */ "./node_modules/@abaplint/core/build/src/position.js");
|
|
57591
|
-
const virtual_position_1 = __webpack_require__(/*! ../virtual_position */ "./node_modules/@abaplint/core/build/src/virtual_position.js");
|
|
57592
|
-
const _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ "./node_modules/@abaplint/core/build/src/objects/_abap_object.js");
|
|
57593
|
-
const version_1 = __webpack_require__(/*! ../version */ "./node_modules/@abaplint/core/build/src/version.js");
|
|
57594
|
-
const registry_1 = __webpack_require__(/*! ../registry */ "./node_modules/@abaplint/core/build/src/registry.js");
|
|
57595
|
-
const syntax_1 = __webpack_require__(/*! ../abap/5_syntax/syntax */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js");
|
|
57837
|
+
const Structures = __webpack_require__(/*! ../abap/3_structures/structures */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js");
|
|
57838
|
+
const _builtin_1 = __webpack_require__(/*! ../abap/5_syntax/_builtin */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/_builtin.js");
|
|
57596
57839
|
const _reference_1 = __webpack_require__(/*! ../abap/5_syntax/_reference */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js");
|
|
57840
|
+
const _scope_type_1 = __webpack_require__(/*! ../abap/5_syntax/_scope_type */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js");
|
|
57841
|
+
const syntax_1 = __webpack_require__(/*! ../abap/5_syntax/syntax */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js");
|
|
57842
|
+
const nodes_1 = __webpack_require__(/*! ../abap/nodes */ "./node_modules/@abaplint/core/build/src/abap/nodes/index.js");
|
|
57597
57843
|
const _typed_identifier_1 = __webpack_require__(/*! ../abap/types/_typed_identifier */ "./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js");
|
|
57598
57844
|
const basic_1 = __webpack_require__(/*! ../abap/types/basic */ "./node_modules/@abaplint/core/build/src/abap/types/basic/index.js");
|
|
57599
57845
|
const config_1 = __webpack_require__(/*! ../config */ "./node_modules/@abaplint/core/build/src/config.js");
|
|
57600
|
-
const
|
|
57601
|
-
const
|
|
57846
|
+
const edit_helper_1 = __webpack_require__(/*! ../edit_helper */ "./node_modules/@abaplint/core/build/src/edit_helper.js");
|
|
57847
|
+
const issue_1 = __webpack_require__(/*! ../issue */ "./node_modules/@abaplint/core/build/src/issue.js");
|
|
57602
57848
|
const objects_1 = __webpack_require__(/*! ../objects */ "./node_modules/@abaplint/core/build/src/objects/index.js");
|
|
57603
|
-
const
|
|
57604
|
-
const
|
|
57605
|
-
const
|
|
57606
|
-
const
|
|
57849
|
+
const _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ "./node_modules/@abaplint/core/build/src/objects/_abap_object.js");
|
|
57850
|
+
const position_1 = __webpack_require__(/*! ../position */ "./node_modules/@abaplint/core/build/src/position.js");
|
|
57851
|
+
const registry_1 = __webpack_require__(/*! ../registry */ "./node_modules/@abaplint/core/build/src/registry.js");
|
|
57852
|
+
const include_graph_1 = __webpack_require__(/*! ../utils/include_graph */ "./node_modules/@abaplint/core/build/src/utils/include_graph.js");
|
|
57853
|
+
const version_1 = __webpack_require__(/*! ../version */ "./node_modules/@abaplint/core/build/src/version.js");
|
|
57854
|
+
const virtual_position_1 = __webpack_require__(/*! ../virtual_position */ "./node_modules/@abaplint/core/build/src/virtual_position.js");
|
|
57855
|
+
const _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ "./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js");
|
|
57856
|
+
const _irule_1 = __webpack_require__(/*! ./_irule */ "./node_modules/@abaplint/core/build/src/rules/_irule.js");
|
|
57607
57857
|
// todo: refactor each sub-rule to new classes?
|
|
57608
57858
|
// todo: add configuration
|
|
57609
57859
|
class DownportConf extends _basic_rule_config_1.BasicRuleConfig {
|
|
@@ -57979,6 +58229,10 @@ Make sure to test the downported code, it might not always be completely correct
|
|
|
57979
58229
|
if (found) {
|
|
57980
58230
|
return found;
|
|
57981
58231
|
}
|
|
58232
|
+
found = this.downportSQLMoveInto(low, high, lowFile, highSyntax);
|
|
58233
|
+
if (found) {
|
|
58234
|
+
return found;
|
|
58235
|
+
}
|
|
57982
58236
|
found = this.downportSQLExtras(low, high, lowFile, highSyntax);
|
|
57983
58237
|
if (found) {
|
|
57984
58238
|
return found;
|
|
@@ -58112,7 +58366,40 @@ Make sure to test the downported code, it might not always be completely correct
|
|
|
58112
58366
|
return undefined;
|
|
58113
58367
|
}
|
|
58114
58368
|
//////////////////////////////////////////
|
|
58115
|
-
/**
|
|
58369
|
+
/** move INTO from after WHERE to after FROM */
|
|
58370
|
+
downportSQLMoveInto(low, high, lowFile, _highSyntax) {
|
|
58371
|
+
var _a;
|
|
58372
|
+
if (!(low.get() instanceof _statement_1.Unknown)) {
|
|
58373
|
+
return undefined;
|
|
58374
|
+
}
|
|
58375
|
+
// note: SQLCond is also used in JOIN(FROM) conditions
|
|
58376
|
+
const where = (_a = high.findFirstExpression(Expressions.Select)) === null || _a === void 0 ? void 0 : _a.findDirectExpression(Expressions.SQLCond);
|
|
58377
|
+
if (where === undefined) {
|
|
58378
|
+
return undefined;
|
|
58379
|
+
}
|
|
58380
|
+
let into = high.findFirstExpression(Expressions.SQLIntoList);
|
|
58381
|
+
if (into === undefined) {
|
|
58382
|
+
into = high.findFirstExpression(Expressions.SQLIntoStructure);
|
|
58383
|
+
}
|
|
58384
|
+
if (into === undefined) {
|
|
58385
|
+
into = high.findFirstExpression(Expressions.SQLIntoTable);
|
|
58386
|
+
}
|
|
58387
|
+
if (into === undefined) {
|
|
58388
|
+
return undefined;
|
|
58389
|
+
}
|
|
58390
|
+
if (where.getLastToken().getEnd().isBefore(into.getFirstToken().getStart()) === false) {
|
|
58391
|
+
return undefined;
|
|
58392
|
+
}
|
|
58393
|
+
const from = high.findFirstExpression(Expressions.SQLFrom);
|
|
58394
|
+
if (from === undefined) {
|
|
58395
|
+
return undefined;
|
|
58396
|
+
}
|
|
58397
|
+
const fix1 = edit_helper_1.EditHelper.insertAt(lowFile, from.getLastToken().getEnd(), ` ` + into.concatTokens());
|
|
58398
|
+
const fix2 = edit_helper_1.EditHelper.deleteRange(lowFile, into.getFirstToken().getStart(), into.getLastToken().getEnd());
|
|
58399
|
+
const fix = edit_helper_1.EditHelper.merge(fix2, fix1);
|
|
58400
|
+
return issue_1.Issue.atToken(lowFile, low.getFirstToken(), "SQL, move INTO", this.getMetadata().key, this.conf.severity, fix);
|
|
58401
|
+
}
|
|
58402
|
+
/** removes @'s and commas */
|
|
58116
58403
|
downportSQLExtras(low, high, lowFile, highSyntax) {
|
|
58117
58404
|
if (!(low.get() instanceof _statement_1.Unknown)) {
|
|
58118
58405
|
return undefined;
|
|
@@ -58156,7 +58443,7 @@ Make sure to test the downported code, it might not always be completely correct
|
|
|
58156
58443
|
}
|
|
58157
58444
|
}
|
|
58158
58445
|
}
|
|
58159
|
-
for (const fieldList of high.findAllExpressionsMulti([Expressions.SQLFieldList, Expressions.SQLFieldListLoop], true)) {
|
|
58446
|
+
for (const fieldList of high.findAllExpressionsMulti([Expressions.SQLFieldList, Expressions.SQLFieldListLoop, Expressions.SQLOrderBy], true)) {
|
|
58160
58447
|
for (const token of fieldList.getDirectTokens()) {
|
|
58161
58448
|
if (token.getStr() === ",") {
|
|
58162
58449
|
addFix(token);
|
|
@@ -59356,24 +59643,33 @@ ${indentation} output = ${uniqueName}.\n`;
|
|
|
59356
59643
|
return issue_1.Issue.atToken(lowFile, high.getFirstToken(), "Outline LOOP input", this.getMetadata().key, this.conf.severity, fix);
|
|
59357
59644
|
}
|
|
59358
59645
|
outlineLoopTarget(node, lowFile, highSyntax) {
|
|
59359
|
-
var _a, _b, _c, _d, _e, _f
|
|
59646
|
+
var _a, _b, _c, _d, _e, _f;
|
|
59360
59647
|
// also allows outlining of voided types
|
|
59361
59648
|
if (!(node.get() instanceof Statements.Loop)) {
|
|
59362
59649
|
return undefined;
|
|
59363
59650
|
}
|
|
59364
|
-
const
|
|
59651
|
+
const source = node.findDirectExpression(Expressions.SimpleSource2);
|
|
59652
|
+
if (source === undefined) {
|
|
59653
|
+
return undefined;
|
|
59654
|
+
}
|
|
59655
|
+
const sourceName = source === null || source === void 0 ? void 0 : source.concatTokens();
|
|
59365
59656
|
if (sourceName === undefined) {
|
|
59366
59657
|
return undefined;
|
|
59367
59658
|
}
|
|
59659
|
+
let foundType = undefined;
|
|
59660
|
+
const spag = highSyntax.spaghetti.lookupPosition(source.getFirstToken().getStart(), lowFile.getFilename());
|
|
59661
|
+
if (spag) {
|
|
59662
|
+
foundType = spag.findVariable(source.concatTokens());
|
|
59663
|
+
}
|
|
59368
59664
|
const concat = node.concatTokens().toUpperCase();
|
|
59369
59665
|
if (concat.includes(" GROUP BY ") || concat.startsWith("LOOP AT GROUP ")) {
|
|
59370
59666
|
return undefined;
|
|
59371
59667
|
}
|
|
59372
59668
|
const isReference = concat.includes(" REFERENCE INTO ");
|
|
59373
59669
|
const indentation = " ".repeat(node.getFirstToken().getStart().getCol() - 1);
|
|
59374
|
-
const dataTarget = (
|
|
59670
|
+
const dataTarget = (_b = (_a = node.findDirectExpression(Expressions.LoopTarget)) === null || _a === void 0 ? void 0 : _a.findDirectExpression(Expressions.Target)) === null || _b === void 0 ? void 0 : _b.findDirectExpression(Expressions.InlineData);
|
|
59375
59671
|
if (dataTarget) {
|
|
59376
|
-
const targetName = ((
|
|
59672
|
+
const targetName = ((_c = dataTarget.findDirectExpression(Expressions.TargetField)) === null || _c === void 0 ? void 0 : _c.concatTokens()) || "DOWNPORT_ERROR";
|
|
59377
59673
|
let code = `DATA ${targetName} LIKE LINE OF ${sourceName}.\n${indentation}`;
|
|
59378
59674
|
if (isReference) {
|
|
59379
59675
|
const likeName = this.uniqueName(node.getFirstToken().getStart(), lowFile.getFilename(), highSyntax);
|
|
@@ -59384,10 +59680,15 @@ ${indentation} output = ${uniqueName}.\n`;
|
|
|
59384
59680
|
const fix = edit_helper_1.EditHelper.merge(fix2, fix1);
|
|
59385
59681
|
return issue_1.Issue.atToken(lowFile, node.getFirstToken(), "Outline LOOP data target", this.getMetadata().key, this.conf.severity, fix);
|
|
59386
59682
|
}
|
|
59387
|
-
const fsTarget = (
|
|
59683
|
+
const fsTarget = (_e = (_d = node.findDirectExpression(Expressions.LoopTarget)) === null || _d === void 0 ? void 0 : _d.findDirectExpression(Expressions.FSTarget)) === null || _e === void 0 ? void 0 : _e.findDirectExpression(Expressions.InlineFS);
|
|
59388
59684
|
if (fsTarget) {
|
|
59389
|
-
const targetName = ((
|
|
59390
|
-
|
|
59685
|
+
const targetName = ((_f = fsTarget.findDirectExpression(Expressions.TargetFieldSymbol)) === null || _f === void 0 ? void 0 : _f.concatTokens()) || "DOWNPORT_ERROR";
|
|
59686
|
+
let type = `LIKE LINE OF ${sourceName}`;
|
|
59687
|
+
const f = foundType === null || foundType === void 0 ? void 0 : foundType.getType();
|
|
59688
|
+
if (f instanceof basic_1.TableType && f.getRowType() instanceof basic_1.AnyType) {
|
|
59689
|
+
type = "TYPE ANY";
|
|
59690
|
+
}
|
|
59691
|
+
const code = `FIELD-SYMBOLS ${targetName} ${type}.\n${indentation}`;
|
|
59391
59692
|
const fix1 = edit_helper_1.EditHelper.insertAt(lowFile, node.getFirstToken().getStart(), code);
|
|
59392
59693
|
const fix2 = edit_helper_1.EditHelper.replaceRange(lowFile, fsTarget.getFirstToken().getStart(), fsTarget.getLastToken().getEnd(), targetName);
|
|
59393
59694
|
const fix = edit_helper_1.EditHelper.merge(fix2, fix1);
|
|
@@ -61923,7 +62224,7 @@ DATA lt_bar TYPE STANDARD TABLE OF ty.`,
|
|
|
61923
62224
|
runParsed(file) {
|
|
61924
62225
|
const issues = [];
|
|
61925
62226
|
for (const statement of file.getStatements()) {
|
|
61926
|
-
if (!(statement.get() instanceof Statements.Data)) {
|
|
62227
|
+
if (!(statement.get() instanceof Statements.Data || statement.get() instanceof Statements.Type)) {
|
|
61927
62228
|
continue;
|
|
61928
62229
|
}
|
|
61929
62230
|
const tt = statement.findFirstExpression(Expressions.TypeTable);
|
|
@@ -64874,7 +65175,7 @@ class LocalTestclassConsistency extends _abap_rule_1.ABAPRule {
|
|
|
64874
65175
|
this.conf = conf;
|
|
64875
65176
|
}
|
|
64876
65177
|
runParsed(file, obj) {
|
|
64877
|
-
var _a;
|
|
65178
|
+
var _a, _b, _c;
|
|
64878
65179
|
const issues = [];
|
|
64879
65180
|
if (this.reg.getConfig().getVersion() === version_1.Version.v700) {
|
|
64880
65181
|
// 700 does not have testclass includes
|
|
@@ -64900,6 +65201,16 @@ class LocalTestclassConsistency extends _abap_rule_1.ABAPRule {
|
|
|
64900
65201
|
issues.push(issue);
|
|
64901
65202
|
}
|
|
64902
65203
|
}
|
|
65204
|
+
if (file.getFilename() === ((_b = obj.getMainABAPFile()) === null || _b === void 0 ? void 0 : _b.getFilename())
|
|
65205
|
+
&& obj.getTestclassFile() === undefined
|
|
65206
|
+
&& ((_c = obj.getXML()) === null || _c === void 0 ? void 0 : _c.includes("<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>")) === true) {
|
|
65207
|
+
const id = obj.getIdentifier();
|
|
65208
|
+
if (id) {
|
|
65209
|
+
const message = "Has <WITH_UNIT_TESTS> set in XML, but no testclasses";
|
|
65210
|
+
const issue = issue_1.Issue.atIdentifier(id, message, this.getMetadata().key, this.conf.severity);
|
|
65211
|
+
issues.push(issue);
|
|
65212
|
+
}
|
|
65213
|
+
}
|
|
64903
65214
|
return issues;
|
|
64904
65215
|
}
|
|
64905
65216
|
}
|
|
@@ -75981,6 +76292,26 @@ class VirtualPosition extends position_1.Position {
|
|
|
75981
76292
|
const casted = p;
|
|
75982
76293
|
return super.equals(this) && this.vrow === casted.vrow && this.vcol === casted.vcol;
|
|
75983
76294
|
}
|
|
76295
|
+
isAfter(p) {
|
|
76296
|
+
if (p instanceof VirtualPosition) {
|
|
76297
|
+
if (this.getRow() > p.getRow()) {
|
|
76298
|
+
return true;
|
|
76299
|
+
}
|
|
76300
|
+
if (this.getRow() === p.getRow() && this.getCol() > p.getCol()) {
|
|
76301
|
+
return true;
|
|
76302
|
+
}
|
|
76303
|
+
if (this.getRow() === p.getRow() && this.getCol() === p.getCol() && this.vrow > p.vrow) {
|
|
76304
|
+
return true;
|
|
76305
|
+
}
|
|
76306
|
+
if (this.getRow() === p.getRow() && this.getCol() === p.getCol() && this.vrow === p.vrow && this.vcol > p.vcol) {
|
|
76307
|
+
return true;
|
|
76308
|
+
}
|
|
76309
|
+
return false;
|
|
76310
|
+
}
|
|
76311
|
+
else {
|
|
76312
|
+
return super.isAfter(p);
|
|
76313
|
+
}
|
|
76314
|
+
}
|
|
75984
76315
|
}
|
|
75985
76316
|
exports.VirtualPosition = VirtualPosition;
|
|
75986
76317
|
//# sourceMappingURL=virtual_position.js.map
|
|
@@ -82120,7 +82451,7 @@ class DeleteInternalTranspiler {
|
|
|
82120
82451
|
if (node.findDirectTokenByText("ADJACENT")) {
|
|
82121
82452
|
extra.push("adjacent: true");
|
|
82122
82453
|
if (node.findDirectTokenByText("COMPARING") && !concat.includes("COMPARING ALL FIELDS")) {
|
|
82123
|
-
const comparing = node.findAllExpressions(abaplint.Expressions.
|
|
82454
|
+
const comparing = node.findAllExpressions(abaplint.Expressions.SimpleFieldChain2);
|
|
82124
82455
|
if (comparing) {
|
|
82125
82456
|
const compareFields = comparing.map(i => "'" + i.getFirstToken().getStr() + "'").join(",");
|
|
82126
82457
|
extra.push("comparing: [" + compareFields + "]");
|
|
@@ -90297,6 +90628,7 @@ function readDocType(xmlData, i){
|
|
|
90297
90628
|
if (xmlData[i] === '<' && !comment) { //Determine the tag type
|
|
90298
90629
|
if( hasBody && isEntity(xmlData, i)){
|
|
90299
90630
|
i += 7;
|
|
90631
|
+
let entityName, val;
|
|
90300
90632
|
[entityName, val,i] = readEntityExp(xmlData,i+1);
|
|
90301
90633
|
if(val.indexOf("&") === -1) //Parameter entities are not supported
|
|
90302
90634
|
entities[ validateEntityName(entityName) ] = {
|
|
@@ -93386,10 +93718,10 @@ if (typeof Object.create === 'function') {
|
|
|
93386
93718
|
module.exports = minimatch
|
|
93387
93719
|
minimatch.Minimatch = Minimatch
|
|
93388
93720
|
|
|
93389
|
-
var path = {
|
|
93390
|
-
|
|
93391
|
-
|
|
93392
|
-
|
|
93721
|
+
var path = (function () { try { return __webpack_require__(/*! path */ "path") } catch (e) {}}()) || {
|
|
93722
|
+
sep: '/'
|
|
93723
|
+
}
|
|
93724
|
+
minimatch.sep = path.sep
|
|
93393
93725
|
|
|
93394
93726
|
var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}
|
|
93395
93727
|
var expand = __webpack_require__(/*! brace-expansion */ "./node_modules/brace-expansion/index.js")
|
|
@@ -93441,43 +93773,64 @@ function filter (pattern, options) {
|
|
|
93441
93773
|
}
|
|
93442
93774
|
|
|
93443
93775
|
function ext (a, b) {
|
|
93444
|
-
a = a || {}
|
|
93445
93776
|
b = b || {}
|
|
93446
93777
|
var t = {}
|
|
93447
|
-
Object.keys(b).forEach(function (k) {
|
|
93448
|
-
t[k] = b[k]
|
|
93449
|
-
})
|
|
93450
93778
|
Object.keys(a).forEach(function (k) {
|
|
93451
93779
|
t[k] = a[k]
|
|
93452
93780
|
})
|
|
93781
|
+
Object.keys(b).forEach(function (k) {
|
|
93782
|
+
t[k] = b[k]
|
|
93783
|
+
})
|
|
93453
93784
|
return t
|
|
93454
93785
|
}
|
|
93455
93786
|
|
|
93456
93787
|
minimatch.defaults = function (def) {
|
|
93457
|
-
if (!def || !Object.keys(def).length)
|
|
93788
|
+
if (!def || typeof def !== 'object' || !Object.keys(def).length) {
|
|
93789
|
+
return minimatch
|
|
93790
|
+
}
|
|
93458
93791
|
|
|
93459
93792
|
var orig = minimatch
|
|
93460
93793
|
|
|
93461
93794
|
var m = function minimatch (p, pattern, options) {
|
|
93462
|
-
return orig
|
|
93795
|
+
return orig(p, pattern, ext(def, options))
|
|
93463
93796
|
}
|
|
93464
93797
|
|
|
93465
93798
|
m.Minimatch = function Minimatch (pattern, options) {
|
|
93466
93799
|
return new orig.Minimatch(pattern, ext(def, options))
|
|
93467
93800
|
}
|
|
93801
|
+
m.Minimatch.defaults = function defaults (options) {
|
|
93802
|
+
return orig.defaults(ext(def, options)).Minimatch
|
|
93803
|
+
}
|
|
93804
|
+
|
|
93805
|
+
m.filter = function filter (pattern, options) {
|
|
93806
|
+
return orig.filter(pattern, ext(def, options))
|
|
93807
|
+
}
|
|
93808
|
+
|
|
93809
|
+
m.defaults = function defaults (options) {
|
|
93810
|
+
return orig.defaults(ext(def, options))
|
|
93811
|
+
}
|
|
93812
|
+
|
|
93813
|
+
m.makeRe = function makeRe (pattern, options) {
|
|
93814
|
+
return orig.makeRe(pattern, ext(def, options))
|
|
93815
|
+
}
|
|
93816
|
+
|
|
93817
|
+
m.braceExpand = function braceExpand (pattern, options) {
|
|
93818
|
+
return orig.braceExpand(pattern, ext(def, options))
|
|
93819
|
+
}
|
|
93820
|
+
|
|
93821
|
+
m.match = function (list, pattern, options) {
|
|
93822
|
+
return orig.match(list, pattern, ext(def, options))
|
|
93823
|
+
}
|
|
93468
93824
|
|
|
93469
93825
|
return m
|
|
93470
93826
|
}
|
|
93471
93827
|
|
|
93472
93828
|
Minimatch.defaults = function (def) {
|
|
93473
|
-
if (!def || !Object.keys(def).length) return Minimatch
|
|
93474
93829
|
return minimatch.defaults(def).Minimatch
|
|
93475
93830
|
}
|
|
93476
93831
|
|
|
93477
93832
|
function minimatch (p, pattern, options) {
|
|
93478
|
-
|
|
93479
|
-
throw new TypeError('glob pattern string required')
|
|
93480
|
-
}
|
|
93833
|
+
assertValidPattern(pattern)
|
|
93481
93834
|
|
|
93482
93835
|
if (!options) options = {}
|
|
93483
93836
|
|
|
@@ -93486,9 +93839,6 @@ function minimatch (p, pattern, options) {
|
|
|
93486
93839
|
return false
|
|
93487
93840
|
}
|
|
93488
93841
|
|
|
93489
|
-
// "" only matches ""
|
|
93490
|
-
if (pattern.trim() === '') return p === ''
|
|
93491
|
-
|
|
93492
93842
|
return new Minimatch(pattern, options).match(p)
|
|
93493
93843
|
}
|
|
93494
93844
|
|
|
@@ -93497,15 +93847,14 @@ function Minimatch (pattern, options) {
|
|
|
93497
93847
|
return new Minimatch(pattern, options)
|
|
93498
93848
|
}
|
|
93499
93849
|
|
|
93500
|
-
|
|
93501
|
-
throw new TypeError('glob pattern string required')
|
|
93502
|
-
}
|
|
93850
|
+
assertValidPattern(pattern)
|
|
93503
93851
|
|
|
93504
93852
|
if (!options) options = {}
|
|
93853
|
+
|
|
93505
93854
|
pattern = pattern.trim()
|
|
93506
93855
|
|
|
93507
93856
|
// windows support: need to use /, not \
|
|
93508
|
-
if (path.sep !== '/') {
|
|
93857
|
+
if (!options.allowWindowsEscape && path.sep !== '/') {
|
|
93509
93858
|
pattern = pattern.split(path.sep).join('/')
|
|
93510
93859
|
}
|
|
93511
93860
|
|
|
@@ -93516,6 +93865,7 @@ function Minimatch (pattern, options) {
|
|
|
93516
93865
|
this.negate = false
|
|
93517
93866
|
this.comment = false
|
|
93518
93867
|
this.empty = false
|
|
93868
|
+
this.partial = !!options.partial
|
|
93519
93869
|
|
|
93520
93870
|
// make the set of regexps etc.
|
|
93521
93871
|
this.make()
|
|
@@ -93525,9 +93875,6 @@ Minimatch.prototype.debug = function () {}
|
|
|
93525
93875
|
|
|
93526
93876
|
Minimatch.prototype.make = make
|
|
93527
93877
|
function make () {
|
|
93528
|
-
// don't do it more than once.
|
|
93529
|
-
if (this._made) return
|
|
93530
|
-
|
|
93531
93878
|
var pattern = this.pattern
|
|
93532
93879
|
var options = this.options
|
|
93533
93880
|
|
|
@@ -93547,7 +93894,7 @@ function make () {
|
|
|
93547
93894
|
// step 2: expand braces
|
|
93548
93895
|
var set = this.globSet = this.braceExpand()
|
|
93549
93896
|
|
|
93550
|
-
if (options.debug) this.debug = console.error
|
|
93897
|
+
if (options.debug) this.debug = function debug() { console.error.apply(console, arguments) }
|
|
93551
93898
|
|
|
93552
93899
|
this.debug(this.pattern, set)
|
|
93553
93900
|
|
|
@@ -93627,12 +93974,11 @@ function braceExpand (pattern, options) {
|
|
|
93627
93974
|
pattern = typeof pattern === 'undefined'
|
|
93628
93975
|
? this.pattern : pattern
|
|
93629
93976
|
|
|
93630
|
-
|
|
93631
|
-
throw new TypeError('undefined pattern')
|
|
93632
|
-
}
|
|
93977
|
+
assertValidPattern(pattern)
|
|
93633
93978
|
|
|
93634
|
-
|
|
93635
|
-
|
|
93979
|
+
// Thanks to Yeting Li <https://github.com/yetingli> for
|
|
93980
|
+
// improving this regexp to avoid a ReDOS vulnerability.
|
|
93981
|
+
if (options.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) {
|
|
93636
93982
|
// shortcut. no need to expand.
|
|
93637
93983
|
return [pattern]
|
|
93638
93984
|
}
|
|
@@ -93640,6 +93986,17 @@ function braceExpand (pattern, options) {
|
|
|
93640
93986
|
return expand(pattern)
|
|
93641
93987
|
}
|
|
93642
93988
|
|
|
93989
|
+
var MAX_PATTERN_LENGTH = 1024 * 64
|
|
93990
|
+
var assertValidPattern = function (pattern) {
|
|
93991
|
+
if (typeof pattern !== 'string') {
|
|
93992
|
+
throw new TypeError('invalid pattern')
|
|
93993
|
+
}
|
|
93994
|
+
|
|
93995
|
+
if (pattern.length > MAX_PATTERN_LENGTH) {
|
|
93996
|
+
throw new TypeError('pattern is too long')
|
|
93997
|
+
}
|
|
93998
|
+
}
|
|
93999
|
+
|
|
93643
94000
|
// parse a component of the expanded set.
|
|
93644
94001
|
// At this point, no pattern may contain "/" in it
|
|
93645
94002
|
// so we're going to return a 2d array, where each entry is the full
|
|
@@ -93654,14 +94011,17 @@ function braceExpand (pattern, options) {
|
|
|
93654
94011
|
Minimatch.prototype.parse = parse
|
|
93655
94012
|
var SUBPARSE = {}
|
|
93656
94013
|
function parse (pattern, isSub) {
|
|
93657
|
-
|
|
93658
|
-
throw new TypeError('pattern is too long')
|
|
93659
|
-
}
|
|
94014
|
+
assertValidPattern(pattern)
|
|
93660
94015
|
|
|
93661
94016
|
var options = this.options
|
|
93662
94017
|
|
|
93663
94018
|
// shortcuts
|
|
93664
|
-
if (
|
|
94019
|
+
if (pattern === '**') {
|
|
94020
|
+
if (!options.noglobstar)
|
|
94021
|
+
return GLOBSTAR
|
|
94022
|
+
else
|
|
94023
|
+
pattern = '*'
|
|
94024
|
+
}
|
|
93665
94025
|
if (pattern === '') return ''
|
|
93666
94026
|
|
|
93667
94027
|
var re = ''
|
|
@@ -93717,10 +94077,12 @@ function parse (pattern, isSub) {
|
|
|
93717
94077
|
}
|
|
93718
94078
|
|
|
93719
94079
|
switch (c) {
|
|
93720
|
-
|
|
94080
|
+
/* istanbul ignore next */
|
|
94081
|
+
case '/': {
|
|
93721
94082
|
// completely not allowed, even escaped.
|
|
93722
94083
|
// Should already be path-split by now.
|
|
93723
94084
|
return false
|
|
94085
|
+
}
|
|
93724
94086
|
|
|
93725
94087
|
case '\\':
|
|
93726
94088
|
clearStateChar()
|
|
@@ -93839,25 +94201,23 @@ function parse (pattern, isSub) {
|
|
|
93839
94201
|
|
|
93840
94202
|
// handle the case where we left a class open.
|
|
93841
94203
|
// "[z-a]" is valid, equivalent to "\[z-a\]"
|
|
93842
|
-
|
|
93843
|
-
|
|
93844
|
-
|
|
93845
|
-
|
|
93846
|
-
|
|
93847
|
-
|
|
93848
|
-
|
|
93849
|
-
|
|
93850
|
-
|
|
93851
|
-
|
|
93852
|
-
|
|
93853
|
-
|
|
93854
|
-
|
|
93855
|
-
|
|
93856
|
-
|
|
93857
|
-
|
|
93858
|
-
|
|
93859
|
-
continue
|
|
93860
|
-
}
|
|
94204
|
+
// split where the last [ was, make sure we don't have
|
|
94205
|
+
// an invalid re. if so, re-walk the contents of the
|
|
94206
|
+
// would-be class to re-translate any characters that
|
|
94207
|
+
// were passed through as-is
|
|
94208
|
+
// TODO: It would probably be faster to determine this
|
|
94209
|
+
// without a try/catch and a new RegExp, but it's tricky
|
|
94210
|
+
// to do safely. For now, this is safe and works.
|
|
94211
|
+
var cs = pattern.substring(classStart + 1, i)
|
|
94212
|
+
try {
|
|
94213
|
+
RegExp('[' + cs + ']')
|
|
94214
|
+
} catch (er) {
|
|
94215
|
+
// not a valid class!
|
|
94216
|
+
var sp = this.parse(cs, SUBPARSE)
|
|
94217
|
+
re = re.substr(0, reClassStart) + '\\[' + sp[0] + '\\]'
|
|
94218
|
+
hasMagic = hasMagic || sp[1]
|
|
94219
|
+
inClass = false
|
|
94220
|
+
continue
|
|
93861
94221
|
}
|
|
93862
94222
|
|
|
93863
94223
|
// finish up the class.
|
|
@@ -93941,9 +94301,7 @@ function parse (pattern, isSub) {
|
|
|
93941
94301
|
// something that could conceivably capture a dot
|
|
93942
94302
|
var addPatternStart = false
|
|
93943
94303
|
switch (re.charAt(0)) {
|
|
93944
|
-
case '.':
|
|
93945
|
-
case '[':
|
|
93946
|
-
case '(': addPatternStart = true
|
|
94304
|
+
case '[': case '.': case '(': addPatternStart = true
|
|
93947
94305
|
}
|
|
93948
94306
|
|
|
93949
94307
|
// Hack to work around lack of negative lookbehind in JS
|
|
@@ -94005,7 +94363,7 @@ function parse (pattern, isSub) {
|
|
|
94005
94363
|
var flags = options.nocase ? 'i' : ''
|
|
94006
94364
|
try {
|
|
94007
94365
|
var regExp = new RegExp('^' + re + '$', flags)
|
|
94008
|
-
} catch (er) {
|
|
94366
|
+
} catch (er) /* istanbul ignore next - should be impossible */ {
|
|
94009
94367
|
// If it was an invalid regular expression, then it can't match
|
|
94010
94368
|
// anything. This trick looks for a character after the end of
|
|
94011
94369
|
// the string, which is of course impossible, except in multi-line
|
|
@@ -94063,7 +94421,7 @@ function makeRe () {
|
|
|
94063
94421
|
|
|
94064
94422
|
try {
|
|
94065
94423
|
this.regexp = new RegExp(re, flags)
|
|
94066
|
-
} catch (ex) {
|
|
94424
|
+
} catch (ex) /* istanbul ignore next - should be impossible */ {
|
|
94067
94425
|
this.regexp = false
|
|
94068
94426
|
}
|
|
94069
94427
|
return this.regexp
|
|
@@ -94081,8 +94439,8 @@ minimatch.match = function (list, pattern, options) {
|
|
|
94081
94439
|
return list
|
|
94082
94440
|
}
|
|
94083
94441
|
|
|
94084
|
-
Minimatch.prototype.match = match
|
|
94085
|
-
|
|
94442
|
+
Minimatch.prototype.match = function match (f, partial) {
|
|
94443
|
+
if (typeof partial === 'undefined') partial = this.partial
|
|
94086
94444
|
this.debug('match', f, this.pattern)
|
|
94087
94445
|
// short-circuit in the case of busted things.
|
|
94088
94446
|
// comments, etc.
|
|
@@ -94164,6 +94522,7 @@ Minimatch.prototype.matchOne = function (file, pattern, partial) {
|
|
|
94164
94522
|
|
|
94165
94523
|
// should be impossible.
|
|
94166
94524
|
// some invalid regexp stuff in the set.
|
|
94525
|
+
/* istanbul ignore if */
|
|
94167
94526
|
if (p === false) return false
|
|
94168
94527
|
|
|
94169
94528
|
if (p === GLOBSTAR) {
|
|
@@ -94237,6 +94596,7 @@ Minimatch.prototype.matchOne = function (file, pattern, partial) {
|
|
|
94237
94596
|
// no match was found.
|
|
94238
94597
|
// However, in partial mode, we can't say this is necessarily over.
|
|
94239
94598
|
// If there's more *pattern* left, then
|
|
94599
|
+
/* istanbul ignore if */
|
|
94240
94600
|
if (partial) {
|
|
94241
94601
|
// ran out of file
|
|
94242
94602
|
this.debug('\n>>> no match, partial?', file, fr, pattern, pr)
|
|
@@ -94250,11 +94610,7 @@ Minimatch.prototype.matchOne = function (file, pattern, partial) {
|
|
|
94250
94610
|
// patterns with magic have been turned into regexps.
|
|
94251
94611
|
var hit
|
|
94252
94612
|
if (typeof p === 'string') {
|
|
94253
|
-
|
|
94254
|
-
hit = f.toLowerCase() === p.toLowerCase()
|
|
94255
|
-
} else {
|
|
94256
|
-
hit = f === p
|
|
94257
|
-
}
|
|
94613
|
+
hit = f === p
|
|
94258
94614
|
this.debug('string match', p, f, hit)
|
|
94259
94615
|
} else {
|
|
94260
94616
|
hit = f.match(p)
|
|
@@ -94285,16 +94641,16 @@ Minimatch.prototype.matchOne = function (file, pattern, partial) {
|
|
|
94285
94641
|
// this is ok if we're doing the match as part of
|
|
94286
94642
|
// a glob fs traversal.
|
|
94287
94643
|
return partial
|
|
94288
|
-
} else if (pi === pl) {
|
|
94644
|
+
} else /* istanbul ignore else */ if (pi === pl) {
|
|
94289
94645
|
// ran out of pattern, still have file left.
|
|
94290
94646
|
// this is only acceptable if we're on the very last
|
|
94291
94647
|
// empty segment of a file with a trailing slash.
|
|
94292
94648
|
// a/* should match a/b/
|
|
94293
|
-
|
|
94294
|
-
return emptyFileEnd
|
|
94649
|
+
return (fi === fl - 1) && (file[fi] === '')
|
|
94295
94650
|
}
|
|
94296
94651
|
|
|
94297
94652
|
// should be unreachable.
|
|
94653
|
+
/* istanbul ignore next */
|
|
94298
94654
|
throw new Error('wtf?')
|
|
94299
94655
|
}
|
|
94300
94656
|
|