@abaplint/cli 2.81.1 → 2.82.0
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/build/bundle.js +29 -18
- package/package.json +6 -6
package/build/bundle.js
CHANGED
|
@@ -60,7 +60,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
|
|
|
60
60
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
61
61
|
|
|
62
62
|
"use strict";
|
|
63
|
-
eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.applyFixes = void 0;\r\nconst core_1 = __webpack_require__(/*! @abaplint/core */ \"./node_modules/@abaplint/core/build/src/index.js\");\r\nfunction applyFixes(inputIssues, reg, fs, bar) {\r\n let changed = [];\r\n let iteration = 1;\r\n let issues = inputIssues;\r\n const MAX_ITERATIONS = 30;\r\n bar === null || bar === void 0 ? void 0 : bar.set(MAX_ITERATIONS, \"Apply Fixes\");\r\n while (iteration <= MAX_ITERATIONS) {\r\n bar === null || bar === void 0 ? void 0 : bar.tick(\"Apply Fixes, iteration \" + iteration + \", \" + issues.length + \" candidates\");\r\n changed = applyList(issues, reg, fs);\r\n if (changed.length === 0) {\r\n break;\r\n }\r\n iteration++;\r\n issues = reg.parse().findIssues();\r\n }\r\n // always end the progress indicator at 100%\r\n while (iteration <= MAX_ITERATIONS) {\r\n bar === null || bar === void 0 ? void 0 : bar.tick(\"Apply Fixes, iteration \" + iteration + \", \" + issues.length + \" candidates\");\r\n iteration++;\r\n }\r\n return issues;\r\n}\r\nexports.applyFixes = applyFixes;\r\nfunction possibleOverlap(edit, list) {\r\n // only checks if the edits have changes in the same rows\r\n for (const e of list) {\r\n for (const file1 of Object.keys(e)) {\r\n for (const file2 of Object.keys(edit)) {\r\n if (file1 === file2) {\r\n for (const list1 of e[file1]) {\r\n for (const list2 of edit[file2]) {\r\n if (list2.range.start.getRow() <= list1.range.start.getRow()\r\n && list2.range.end.getRow() >= list1.range.start.getRow()) {\r\n return true;\r\n }\r\n if (list2.range.start.getRow() <= list1.range.
|
|
63
|
+
eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.applyFixes = void 0;\r\nconst core_1 = __webpack_require__(/*! @abaplint/core */ \"./node_modules/@abaplint/core/build/src/index.js\");\r\nfunction applyFixes(inputIssues, reg, fs, bar) {\r\n let changed = [];\r\n let iteration = 1;\r\n let issues = inputIssues;\r\n const MAX_ITERATIONS = 30;\r\n bar === null || bar === void 0 ? void 0 : bar.set(MAX_ITERATIONS, \"Apply Fixes\");\r\n while (iteration <= MAX_ITERATIONS) {\r\n bar === null || bar === void 0 ? void 0 : bar.tick(\"Apply Fixes, iteration \" + iteration + \", \" + issues.length + \" candidates\");\r\n changed = applyList(issues, reg, fs);\r\n if (changed.length === 0) {\r\n break;\r\n }\r\n iteration++;\r\n issues = reg.parse().findIssues();\r\n }\r\n // always end the progress indicator at 100%\r\n while (iteration <= MAX_ITERATIONS) {\r\n bar === null || bar === void 0 ? void 0 : bar.tick(\"Apply Fixes, iteration \" + iteration + \", \" + issues.length + \" candidates\");\r\n iteration++;\r\n }\r\n return issues;\r\n}\r\nexports.applyFixes = applyFixes;\r\nfunction possibleOverlap(edit, list) {\r\n // only checks if the edits have changes in the same rows\r\n for (const e of list) {\r\n for (const file1 of Object.keys(e)) {\r\n for (const file2 of Object.keys(edit)) {\r\n if (file1 === file2) {\r\n for (const list1 of e[file1]) {\r\n for (const list2 of edit[file2]) {\r\n if (list2.range.start.getRow() <= list1.range.start.getRow()\r\n && list2.range.end.getRow() >= list1.range.start.getRow()) {\r\n return true;\r\n }\r\n if (list2.range.start.getRow() <= list1.range.start.getRow()\r\n && list2.range.end.getRow() >= list1.range.end.getRow()) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return false;\r\n}\r\nfunction applyList(issues, reg, fs) {\r\n const edits = [];\r\n for (const i of issues) {\r\n const edit = i.getFix();\r\n if (edit === undefined) {\r\n continue;\r\n }\r\n else if (possibleOverlap(edit, edits) === true) {\r\n continue;\r\n }\r\n edits.push(edit);\r\n }\r\n const changed = (0, core_1.applyEditList)(reg, edits);\r\n for (const filename of changed) {\r\n const file = reg.getFileByName(filename);\r\n if (file === undefined) {\r\n continue;\r\n }\r\n fs.writeFileSync(file.getFilename(), file.getRaw());\r\n }\r\n return changed;\r\n}\r\n//# sourceMappingURL=fixes.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./build/src/fixes.js?");
|
|
64
64
|
|
|
65
65
|
/***/ }),
|
|
66
66
|
|
|
@@ -5560,7 +5560,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
|
|
|
5560
5560
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
5561
5561
|
|
|
5562
5562
|
"use strict";
|
|
5563
|
-
eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.TypeBegin = void 0;\r\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\r\nclass TypeBegin {\r\n getMatcher() {\r\n const ret = (0, combi_1.seq)(\"TYPES\", \"BEGIN OF\", expressions_1.NamespaceSimpleName);\r\n return ret;\r\n }\r\n}\r\nexports.TypeBegin = TypeBegin;\r\n//# sourceMappingURL=type_begin.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_begin.js?");
|
|
5563
|
+
eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.TypeBegin = void 0;\r\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\r\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\r\nclass TypeBegin {\r\n getMatcher() {\r\n const ret = (0, combi_1.seq)(\"TYPES\", \"BEGIN OF\", expressions_1.NamespaceSimpleName, (0, combi_1.optPrio)((0, combi_1.verNot)(version_1.Version.Cloud, \"%_FINAL\")));\r\n return ret;\r\n }\r\n}\r\nexports.TypeBegin = TypeBegin;\r\n//# sourceMappingURL=type_begin.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_begin.js?");
|
|
5564
5564
|
|
|
5565
5565
|
/***/ }),
|
|
5566
5566
|
|
|
@@ -6132,7 +6132,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
|
|
|
6132
6132
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
6133
6133
|
|
|
6134
6134
|
"use strict";
|
|
6135
|
-
eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.Normal = void 0;\r\nconst Structures = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\r\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\r\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\r\nconst _statement_1 = __webpack_require__(/*! ../../2_statements/statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\r\nclass Normal {\r\n getMatcher() {\r\n // note that the sequence of alternatives here influences performance\r\n return (0, _combi_1.alt)((0, _combi_1.sta)(Statements.Move), (0, _combi_1.sta)(Statements.Call), (0, _combi_1.sta)(Statements.Data), (0, _combi_1.sub)(Structures.If), (0, _combi_1.sta)(Statements.Clear), (0, _combi_1.sta)(Statements.FieldSymbol), (0, _combi_1.sta)(Statements.CreateObject), (0, _combi_1.sta)(Statements.CallFunction), (0, _combi_1.sta)(_statement_1.MacroCall), (0, _combi_1.sub)(Structures.Loop), (0, _combi_1.sta)(Statements.Append), (0, _combi_1.sub)(Structures.Try), (0, _combi_1.sta)(Statements.ReadTable), (0, _combi_1.sta)(Statements.Assert), (0, _combi_1.sta)(Statements.Return), (0, _combi_1.sta)(Statements.Select), (0, _combi_1.sta)(Statements.Assign), (0, _combi_1.sta)(Statements.InsertInternal), (0, _combi_1.sta)(Statements.DeleteInternal), (0, _combi_1.sta)(Statements.Concatenate), (0, _combi_1.sub)(Structures.Case), (0, _combi_1.sub)(Structures.CaseType), (0, _combi_1.sub)(Structures.Enhancement), (0, _combi_1.sub)(Structures.EnhancementSection), (0, _combi_1.sta)(Statements.AddCorresponding), (0, _combi_1.sta)(Statements.Add), (0, _combi_1.sta)(Statements.AssignLocalCopy), (0, _combi_1.sta)(Statements.AuthorityCheck), (0, _combi_1.sta)(Statements.Back), (0, _combi_1.sta)(Statements.Break), (0, _combi_1.sta)(Statements.BreakId), (0, _combi_1.sta)(Statements.CallDatabase), (0, _combi_1.sta)(Statements.CallDialog), (0, _combi_1.sta)(Statements.CallKernel), (0, _combi_1.sta)(Statements.CallOLE), (0, _combi_1.sta)(Statements.CallScreen), (0, _combi_1.sta)(Statements.ModifyScreen), (0, _combi_1.sta)(Statements.CallSelectionScreen), (0, _combi_1.sta)(Statements.CallTransaction), (0, _combi_1.sta)(Statements.CallTransformation), (0, _combi_1.sta)(Statements.Check), (0, _combi_1.sta)(Statements.ClassDefinitionLoad), (0, _combi_1.sta)(Statements.CloseCursor), (0, _combi_1.sta)(Statements.CloseDataset), (0, _combi_1.sta)(Statements.Collect), (0, _combi_1.sta)(Statements.Commit), (0, _combi_1.sta)(Statements.Communication), (0, _combi_1.sta)(Statements.Compute), (0, _combi_1.sta)(Statements.CallBadi), (0, _combi_1.sta)(Statements.Condense), (0, _combi_1.sta)(Statements.Constant), (0, _combi_1.sta)(Statements.Contexts), (0, _combi_1.sta)(Statements.Continue), (0, _combi_1.sta)(Statements.ConvertText), (0, _combi_1.sta)(Statements.Convert), (0, _combi_1.sta)(Statements.CreateData), (0, _combi_1.sta)(Statements.CreateOLE), (0, _combi_1.sta)(Statements.DeleteCluster), (0, _combi_1.sta)(Statements.DeleteDatabase), (0, _combi_1.sta)(Statements.DeleteDataset), (0, _combi_1.sta)(Statements.DeleteDynpro), (0, _combi_1.sta)(Statements.DeleteMemory), (0, _combi_1.sta)(Statements.DeleteReport), (0, _combi_1.sta)(Statements.DeleteTextpool), (0, _combi_1.sta)(Statements.Demand), (0, _combi_1.sta)(Statements.Describe), (0, _combi_1.sta)(Statements.Detail), (0, _combi_1.sta)(Statements.Divide), (0, _combi_1.sta)(Statements.EditorCall), (0, _combi_1.sta)(Statements.EnhancementPoint), (0, _combi_1.sta)(Statements.Exit), (0, _combi_1.sta)(Statements.ExportDynpro), (0, _combi_1.sta)(Statements.Export), (0, _combi_1.sta)(Statements.Extract), (0, _combi_1.sta)(Statements.FetchNextCursor), (0, _combi_1.sta)(Statements.FieldGroup), (0, _combi_1.sta)(Statements.Fields), (0, _combi_1.sta)(Statements.Find), (0, _combi_1.sta)(Statements.Format), (0, _combi_1.sta)(Statements.FreeMemory), (0, _combi_1.sta)(Statements.FreeObject), (0, _combi_1.sta)(Statements.Free), (0, _combi_1.sta)(Statements.GenerateDynpro), (0, _combi_1.sta)(Statements.GenerateReport), (0, _combi_1.sta)(Statements.GenerateSubroutine), (0, _combi_1.sta)(Statements.GetBadi), (0, _combi_1.sta)(Statements.GetBit), (0, _combi_1.sta)(Statements.GetCursor), (0, _combi_1.sta)(Statements.GetDataset), (0, _combi_1.sta)(Statements.GetLocale), (0, _combi_1.sta)(Statements.GetParameter), (0, _combi_1.sta)(Statements.GetPFStatus), (0, _combi_1.sta)(Statements.GetProperty), (0, _combi_1.sta)(Statements.GetReference), (0, _combi_1.sta)(Statements.GetRunTime), (0, _combi_1.sta)(Statements.GetTime), (0, _combi_1.sta)(Statements.Hide), (0, _combi_1.sta)(Statements.Nodes), (0, _combi_1.sta)(Statements.ImportDynpro), (0, _combi_1.sta)(Statements.ImportNametab), (0, _combi_1.sta)(Statements.MoveCorresponding), (0, _combi_1.sta)(Statements.Import), (0, _combi_1.sta)(Statements.Infotypes), (0, _combi_1.sta)(Statements.Include), // include does not have to be at top level\r\n (0, _combi_1.sta)(Statements.InsertDatabase), (0, _combi_1.sta)(Statements.InsertReport), (0, _combi_1.sta)(Statements.InsertTextpool), (0, _combi_1.sta)(Statements.InsertFieldGroup), (0, _combi_1.sta)(Statements.InterfaceLoad), (0, _combi_1.sta)(Statements.Leave), (0, _combi_1.sta)(Statements.LoadReport), (0, _combi_1.sta)(Statements.Local), (0, _combi_1.sta)(Statements.LogPoint), (0, _combi_1.sta)(Statements.Message), (0, _combi_1.sta)(Statements.ModifyLine), (0, _combi_1.sta)(Statements.ModifyDatabase), (0, _combi_1.sta)(Statements.ModifyInternal), (0, _combi_1.sta)(Statements.Multiply), (0, _combi_1.sta)(Statements.NewLine), (0, _combi_1.sta)(Statements.NewPage), (0, _combi_1.sta)(Statements.OpenCursor), (0, _combi_1.sta)(Statements.OpenDataset), (0, _combi_1.sta)(Statements.Overlay), (0, _combi_1.sta)(Statements.Pack), (0, _combi_1.sta)(Statements.Perform), (0, _combi_1.sta)(Statements.Position), (0, _combi_1.sta)(Statements.Put), (0, _combi_1.sta)(Statements.PrintControl), (0, _combi_1.sta)(Statements.RaiseEvent), (0, _combi_1.sta)(Statements.Raise), (0, _combi_1.sta)(Statements.Ranges), (0, _combi_1.sta)(Statements.ReadDataset), (0, _combi_1.sta)(Statements.ReadLine), (0, _combi_1.sta)(Statements.ReadReport), (0, _combi_1.sta)(Statements.ReadTextpool), (0, _combi_1.sta)(Statements.Receive), (0, _combi_1.sta)(Statements.RefreshControl), (0, _combi_1.sta)(Statements.Refresh), (0, _combi_1.sta)(Statements.Reject), (0, _combi_1.sta)(Statements.Replace), (0, _combi_1.sta)(Statements.Reserve), (0, _combi_1.sta)(Statements.Resume), (0, _combi_1.sta)(Statements.Retry), (0, _combi_1.sta)(Statements.Rollback), (0, _combi_1.sta)(Statements.Scan), (0, _combi_1.sta)(Statements.ScrollList), (0, _combi_1.sta)(Statements.Search), (0, _combi_1.sta)(Statements.SetBit), (0, _combi_1.sta)(Statements.SetBlank), (0, _combi_1.sta)(Statements.SetCountry), (0, _combi_1.sta)(Statements.SetCursor), (0, _combi_1.sta)(Statements.SetDataset), (0, _combi_1.sta)(Statements.SetExtendedCheck), (0, _combi_1.sta)(Statements.SetHandler), (0, _combi_1.sta)(Statements.SetLanguage), (0, _combi_1.sta)(Statements.SetLeft), (0, _combi_1.sta)(Statements.SetLocale), (0, _combi_1.sta)(Statements.SetMargin), (0, _combi_1.sta)(Statements.SetParameter), (0, _combi_1.sta)(Statements.SetPFStatus), (0, _combi_1.sta)(Statements.SetProperty), (0, _combi_1.sta)(Statements.SetRunTime), (0, _combi_1.sta)(Statements.SetScreen), (0, _combi_1.sta)(Statements.SetTitlebar), (0, _combi_1.sta)(Statements.SetUserCommand), (0, _combi_1.sta)(Statements.SetUpdateTask), (0, _combi_1.sta)(Statements.Shift), (0, _combi_1.sta)(Statements.Skip), (0, _combi_1.sta)(Statements.SortDataset), (0, _combi_1.sta)(Statements.Sort), (0, _combi_1.sta)(Statements.Static), (0, _combi_1.sta)(Statements.Split), (0, _combi_1.sta)(Statements.Stop), (0, _combi_1.sta)(Statements.Submit), (0, _combi_1.sta)(Statements.Summary), (0, _combi_1.sta)(Statements.SubtractCorresponding), (0, _combi_1.sta)(Statements.Subtract), (0, _combi_1.sta)(Statements.SuppressDialog), (0, _combi_1.sta)(Statements.Supply), (0, _combi_1.sta)(Statements.Sum), (0, _combi_1.sta)(Statements.SyntaxCheck), (0, _combi_1.sta)(Statements.SystemCall), (0, _combi_1.sta)(Statements.Tables), (0, _combi_1.sta)(Statements.Transfer), (0, _combi_1.sta)(Statements.Translate), (0, _combi_1.sta)(Statements.Type), (0, _combi_1.sta)(Statements.TypePools), (0, _combi_1.sta)(Statements.Uline), (0, _combi_1.sta)(Statements.Unassign), (0, _combi_1.sta)(Statements.Unpack), (0, _combi_1.sta)(Statements.UpdateDatabase), (0, _combi_1.sta)(Statements.Wait), (0, _combi_1.sta)(Statements.Window), (0, _combi_1.sta)(Statements.Write), (0, _combi_1.sta)(Statements.CommitEntities), (0, _combi_1.sta)(Statements.ModifyEntities), (0, _combi_1.sta)(Statements.ReadEntities), (0, _combi_1.sta)(Statements.RollbackEntities), (0, _combi_1.sub)(Structures.Define), (0, _combi_1.sub)(Structures.TestInjection), (0, _combi_1.sub)(Structures.TestSeam), (0, _combi_1.sub)(Structures.Provide), (0, _combi_1.sub)(Structures.CatchSystemExceptions), (0, _combi_1.sub)(Structures.At), (0, _combi_1.sub)(Structures.Constants), (0, _combi_1.sub)(Structures.Types), (0, _combi_1.sub)(Structures.Statics), (0, _combi_1.sub)(Structures.Select), (0, _combi_1.sub)(Structures.Data), (0, _combi_1.sub)(Structures.TypeEnum), (0, _combi_1.sub)(Structures.While), (0, _combi_1.sub)(Structures.With), (0, _combi_1.sub)(Structures.Do), (0, _combi_1.sub)(Structures.ExecSQL));\r\n }\r\n}\r\nexports.Normal = Normal;\r\n//# sourceMappingURL=normal.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/normal.js?");
|
|
6135
|
+
eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.Normal = void 0;\r\nconst Structures = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\r\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\r\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\r\nconst _statement_1 = __webpack_require__(/*! ../../2_statements/statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\r\nclass Normal {\r\n getMatcher() {\r\n // note that the sequence of alternatives here influences performance\r\n return (0, _combi_1.alt)((0, _combi_1.sta)(Statements.Move), (0, _combi_1.sta)(Statements.Call), (0, _combi_1.sta)(Statements.Data), (0, _combi_1.sub)(Structures.If), (0, _combi_1.sta)(Statements.Clear), (0, _combi_1.sta)(Statements.FieldSymbol), (0, _combi_1.sta)(Statements.CreateObject), (0, _combi_1.sta)(Statements.CallFunction), (0, _combi_1.sta)(_statement_1.MacroCall), (0, _combi_1.sub)(Structures.Loop), (0, _combi_1.sta)(Statements.Append), (0, _combi_1.sub)(Structures.Try), (0, _combi_1.sta)(Statements.ReadTable), (0, _combi_1.sta)(Statements.Assert), (0, _combi_1.sta)(Statements.Return), (0, _combi_1.sta)(Statements.Select), (0, _combi_1.sta)(Statements.Assign), (0, _combi_1.sta)(Statements.InsertInternal), (0, _combi_1.sta)(Statements.DeleteInternal), (0, _combi_1.sta)(Statements.Concatenate), (0, _combi_1.sub)(Structures.Case), (0, _combi_1.sub)(Structures.CaseType), (0, _combi_1.sub)(Structures.Enhancement), (0, _combi_1.sub)(Structures.EnhancementSection), (0, _combi_1.sta)(Statements.AddCorresponding), (0, _combi_1.sta)(Statements.Add), (0, _combi_1.sta)(Statements.AssignLocalCopy), (0, _combi_1.sta)(Statements.AuthorityCheck), (0, _combi_1.sta)(Statements.Back), (0, _combi_1.sta)(Statements.Break), (0, _combi_1.sta)(Statements.BreakId), (0, _combi_1.sta)(Statements.CallDatabase), (0, _combi_1.sta)(Statements.CallDialog), (0, _combi_1.sta)(Statements.CallKernel), (0, _combi_1.sta)(Statements.CallOLE), (0, _combi_1.sta)(Statements.CallScreen), (0, _combi_1.sta)(Statements.ModifyScreen), (0, _combi_1.sta)(Statements.CallSelectionScreen), (0, _combi_1.sta)(Statements.CallTransaction), (0, _combi_1.sta)(Statements.CallTransformation), (0, _combi_1.sta)(Statements.Check), (0, _combi_1.sta)(Statements.ClassDefinitionLoad), (0, _combi_1.sta)(Statements.CloseCursor), (0, _combi_1.sta)(Statements.CloseDataset), (0, _combi_1.sta)(Statements.Collect), (0, _combi_1.sta)(Statements.Commit), (0, _combi_1.sta)(Statements.Communication), (0, _combi_1.sta)(Statements.Compute), (0, _combi_1.sta)(Statements.CallBadi), (0, _combi_1.sta)(Statements.Condense), (0, _combi_1.sta)(Statements.Constant), (0, _combi_1.sta)(Statements.Contexts), (0, _combi_1.sta)(Statements.Continue), (0, _combi_1.sta)(Statements.ConvertText), (0, _combi_1.sta)(Statements.Convert), (0, _combi_1.sta)(Statements.CreateData), (0, _combi_1.sta)(Statements.CreateOLE), (0, _combi_1.sta)(Statements.DeleteCluster), (0, _combi_1.sta)(Statements.DeleteDatabase), (0, _combi_1.sta)(Statements.DeleteDataset), (0, _combi_1.sta)(Statements.DeleteDynpro), (0, _combi_1.sta)(Statements.DeleteMemory), (0, _combi_1.sta)(Statements.DeleteReport), (0, _combi_1.sta)(Statements.DeleteTextpool), (0, _combi_1.sta)(Statements.Demand), (0, _combi_1.sta)(Statements.Describe), (0, _combi_1.sta)(Statements.Detail), (0, _combi_1.sta)(Statements.Divide), (0, _combi_1.sta)(Statements.EditorCall), (0, _combi_1.sta)(Statements.EnhancementPoint), (0, _combi_1.sta)(Statements.Exit), (0, _combi_1.sta)(Statements.ExportDynpro), (0, _combi_1.sta)(Statements.Export), (0, _combi_1.sta)(Statements.Extract), (0, _combi_1.sta)(Statements.FetchNextCursor), (0, _combi_1.sta)(Statements.FieldGroup), (0, _combi_1.sta)(Statements.Fields), (0, _combi_1.sta)(Statements.Find), (0, _combi_1.sta)(Statements.Format), (0, _combi_1.sta)(Statements.FreeMemory), (0, _combi_1.sta)(Statements.FreeObject), (0, _combi_1.sta)(Statements.Free), (0, _combi_1.sta)(Statements.GenerateDynpro), (0, _combi_1.sta)(Statements.GenerateReport), (0, _combi_1.sta)(Statements.GenerateSubroutine), (0, _combi_1.sta)(Statements.GetBadi), (0, _combi_1.sta)(Statements.GetBit), (0, _combi_1.sta)(Statements.GetCursor), (0, _combi_1.sta)(Statements.GetDataset), (0, _combi_1.sta)(Statements.GetLocale), (0, _combi_1.sta)(Statements.GetParameter), (0, _combi_1.sta)(Statements.GetPFStatus), (0, _combi_1.sta)(Statements.GetProperty), (0, _combi_1.sta)(Statements.GetReference), (0, _combi_1.sta)(Statements.GetRunTime), (0, _combi_1.sta)(Statements.GetTime), (0, _combi_1.sta)(Statements.Hide), (0, _combi_1.sta)(Statements.Nodes), (0, _combi_1.sta)(Statements.ImportDynpro), (0, _combi_1.sta)(Statements.ImportNametab), (0, _combi_1.sta)(Statements.MoveCorresponding), (0, _combi_1.sta)(Statements.Import), (0, _combi_1.sta)(Statements.Infotypes), (0, _combi_1.sta)(Statements.Include), // include does not have to be at top level\r\n (0, _combi_1.sta)(Statements.InsertDatabase), (0, _combi_1.sta)(Statements.InsertReport), (0, _combi_1.sta)(Statements.InsertTextpool), (0, _combi_1.sta)(Statements.InsertFieldGroup), (0, _combi_1.sta)(Statements.InterfaceLoad), (0, _combi_1.sta)(Statements.Leave), (0, _combi_1.sta)(Statements.LoadReport), (0, _combi_1.sta)(Statements.Local), (0, _combi_1.sta)(Statements.With), (0, _combi_1.sta)(Statements.LogPoint), (0, _combi_1.sta)(Statements.Message), (0, _combi_1.sta)(Statements.ModifyLine), (0, _combi_1.sta)(Statements.ModifyDatabase), (0, _combi_1.sta)(Statements.ModifyInternal), (0, _combi_1.sta)(Statements.Multiply), (0, _combi_1.sta)(Statements.NewLine), (0, _combi_1.sta)(Statements.NewPage), (0, _combi_1.sta)(Statements.OpenCursor), (0, _combi_1.sta)(Statements.OpenDataset), (0, _combi_1.sta)(Statements.Overlay), (0, _combi_1.sta)(Statements.Pack), (0, _combi_1.sta)(Statements.Perform), (0, _combi_1.sta)(Statements.Position), (0, _combi_1.sta)(Statements.Put), (0, _combi_1.sta)(Statements.PrintControl), (0, _combi_1.sta)(Statements.RaiseEvent), (0, _combi_1.sta)(Statements.Raise), (0, _combi_1.sta)(Statements.Ranges), (0, _combi_1.sta)(Statements.ReadDataset), (0, _combi_1.sta)(Statements.ReadLine), (0, _combi_1.sta)(Statements.ReadReport), (0, _combi_1.sta)(Statements.ReadTextpool), (0, _combi_1.sta)(Statements.Receive), (0, _combi_1.sta)(Statements.RefreshControl), (0, _combi_1.sta)(Statements.Refresh), (0, _combi_1.sta)(Statements.Reject), (0, _combi_1.sta)(Statements.Replace), (0, _combi_1.sta)(Statements.Reserve), (0, _combi_1.sta)(Statements.Resume), (0, _combi_1.sta)(Statements.Retry), (0, _combi_1.sta)(Statements.Rollback), (0, _combi_1.sta)(Statements.Scan), (0, _combi_1.sta)(Statements.ScrollList), (0, _combi_1.sta)(Statements.Search), (0, _combi_1.sta)(Statements.SetBit), (0, _combi_1.sta)(Statements.SetBlank), (0, _combi_1.sta)(Statements.SetCountry), (0, _combi_1.sta)(Statements.SetCursor), (0, _combi_1.sta)(Statements.SetDataset), (0, _combi_1.sta)(Statements.SetExtendedCheck), (0, _combi_1.sta)(Statements.SetHandler), (0, _combi_1.sta)(Statements.SetLanguage), (0, _combi_1.sta)(Statements.SetLeft), (0, _combi_1.sta)(Statements.SetLocale), (0, _combi_1.sta)(Statements.SetMargin), (0, _combi_1.sta)(Statements.SetParameter), (0, _combi_1.sta)(Statements.SetPFStatus), (0, _combi_1.sta)(Statements.SetProperty), (0, _combi_1.sta)(Statements.SetRunTime), (0, _combi_1.sta)(Statements.SetScreen), (0, _combi_1.sta)(Statements.SetTitlebar), (0, _combi_1.sta)(Statements.SetUserCommand), (0, _combi_1.sta)(Statements.SetUpdateTask), (0, _combi_1.sta)(Statements.Shift), (0, _combi_1.sta)(Statements.Skip), (0, _combi_1.sta)(Statements.SortDataset), (0, _combi_1.sta)(Statements.Sort), (0, _combi_1.sta)(Statements.Static), (0, _combi_1.sta)(Statements.Split), (0, _combi_1.sta)(Statements.Stop), (0, _combi_1.sta)(Statements.Submit), (0, _combi_1.sta)(Statements.Summary), (0, _combi_1.sta)(Statements.SubtractCorresponding), (0, _combi_1.sta)(Statements.Subtract), (0, _combi_1.sta)(Statements.SuppressDialog), (0, _combi_1.sta)(Statements.Supply), (0, _combi_1.sta)(Statements.Sum), (0, _combi_1.sta)(Statements.SyntaxCheck), (0, _combi_1.sta)(Statements.SystemCall), (0, _combi_1.sta)(Statements.Tables), (0, _combi_1.sta)(Statements.Transfer), (0, _combi_1.sta)(Statements.Translate), (0, _combi_1.sta)(Statements.Type), (0, _combi_1.sta)(Statements.TypePools), (0, _combi_1.sta)(Statements.Uline), (0, _combi_1.sta)(Statements.Unassign), (0, _combi_1.sta)(Statements.Unpack), (0, _combi_1.sta)(Statements.UpdateDatabase), (0, _combi_1.sta)(Statements.Wait), (0, _combi_1.sta)(Statements.Window), (0, _combi_1.sta)(Statements.Write), (0, _combi_1.sta)(Statements.CommitEntities), (0, _combi_1.sta)(Statements.ModifyEntities), (0, _combi_1.sta)(Statements.ReadEntities), (0, _combi_1.sta)(Statements.RollbackEntities), (0, _combi_1.sub)(Structures.Define), (0, _combi_1.sub)(Structures.TestInjection), (0, _combi_1.sub)(Structures.TestSeam), (0, _combi_1.sub)(Structures.Provide), (0, _combi_1.sub)(Structures.CatchSystemExceptions), (0, _combi_1.sub)(Structures.At), (0, _combi_1.sub)(Structures.Constants), (0, _combi_1.sub)(Structures.Types), (0, _combi_1.sub)(Structures.Statics), (0, _combi_1.sub)(Structures.Select), (0, _combi_1.sub)(Structures.Data), (0, _combi_1.sub)(Structures.TypeEnum), (0, _combi_1.sub)(Structures.While), (0, _combi_1.sub)(Structures.With), (0, _combi_1.sub)(Structures.Do), (0, _combi_1.sub)(Structures.ExecSQL));\r\n }\r\n}\r\nexports.Normal = Normal;\r\n//# sourceMappingURL=normal.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/normal.js?");
|
|
6136
6136
|
|
|
6137
6137
|
/***/ }),
|
|
6138
6138
|
|
|
@@ -6275,7 +6275,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
|
|
|
6275
6275
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
6276
6276
|
|
|
6277
6277
|
"use strict";
|
|
6278
|
-
eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.Types = void 0;\r\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\r\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\r\nconst _statement_1 = __webpack_require__(/*! ../../2_statements/statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\r\nclass Types {\r\n getMatcher() {\r\n return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.TypeBegin), (0, _combi_1.star)((0, _combi_1.alt)((0, _combi_1.sta)(Statements.Type), (0, _combi_1.sub)(Types), (0, _combi_1.sta)(_statement_1.MacroCall), (0, _combi_1.sta)(Statements.IncludeType))), (0, _combi_1.sta)(Statements.TypeEnd));\r\n }\r\n}\r\nexports.Types = Types;\r\n//# sourceMappingURL=types.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/types.js?");
|
|
6278
|
+
eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.Types = void 0;\r\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\r\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\r\nconst _statement_1 = __webpack_require__(/*! ../../2_statements/statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\r\nclass Types {\r\n getMatcher() {\r\n return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.TypeBegin), (0, _combi_1.star)((0, _combi_1.alt)((0, _combi_1.sta)(Statements.Type), (0, _combi_1.sub)(Types), (0, _combi_1.sta)(_statement_1.MacroCall), (0, _combi_1.sta)(Statements.Include), (0, _combi_1.sta)(Statements.IncludeType))), (0, _combi_1.sta)(Statements.TypeEnd));\r\n }\r\n}\r\nexports.Types = Types;\r\n//# sourceMappingURL=types.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/types.js?");
|
|
6279
6279
|
|
|
6280
6280
|
/***/ }),
|
|
6281
6281
|
|
|
@@ -6374,7 +6374,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
|
|
|
6374
6374
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
6375
6375
|
|
|
6376
6376
|
"use strict";
|
|
6377
|
-
eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.BuiltIn = void 0;\r\n/* eslint-disable max-len */\r\nconst _typed_identifier_1 = __webpack_require__(/*! ../types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\r\nconst basic_1 = __webpack_require__(/*! ../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\r\nconst tokens_1 = __webpack_require__(/*! ../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\r\nconst position_1 = __webpack_require__(/*! ../../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\r\nconst visibility_1 = __webpack_require__(/*! ../4_file_information/visibility */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/visibility.js\");\r\nconst _identifier_1 = __webpack_require__(/*! ../4_file_information/_identifier */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/_identifier.js\");\r\nconst version_1 = __webpack_require__(/*! ../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\r\nclass BuiltInMethod extends _identifier_1.Identifier {\r\n constructor(token, filename, method, row) {\r\n super(token, filename);\r\n this.method = method;\r\n this.row = row;\r\n }\r\n getRequiredParameters() {\r\n return [];\r\n }\r\n getOptional() {\r\n throw new Error(\"BuiltInMethod->Method not implemented.\");\r\n }\r\n getAll() {\r\n throw new Error(\"BuiltInMethod->getAll, Method not implemented.\");\r\n }\r\n getImporting() {\r\n const ret = [];\r\n for (const i in this.method.mandatory) {\r\n const id = new tokens_1.Identifier(new position_1.Position(this.row, 1), i);\r\n ret.push(new _typed_identifier_1.TypedIdentifier(id, BuiltIn.filename, this.method.mandatory[i]));\r\n }\r\n for (const i in this.method.optional) {\r\n const id = new tokens_1.Identifier(new position_1.Position(this.row, 1), i);\r\n ret.push(new _typed_identifier_1.TypedIdentifier(id, BuiltIn.filename, this.method.optional[i]));\r\n }\r\n return ret;\r\n }\r\n getDefaultImporting() {\r\n if (this.method.mandatory === undefined) {\r\n return undefined;\r\n }\r\n const keys = Object.keys(this.method.mandatory);\r\n if (keys.length === 1) {\r\n return keys[0];\r\n }\r\n return undefined;\r\n }\r\n getExporting() {\r\n return [];\r\n }\r\n getRaising() {\r\n return [];\r\n }\r\n getChanging() {\r\n return [];\r\n }\r\n getReturning() {\r\n const id = new tokens_1.Identifier(new position_1.Position(this.row, 1), \"ret\");\r\n return new _typed_identifier_1.TypedIdentifier(id, BuiltIn.filename, this.method.return);\r\n }\r\n getExceptions() {\r\n return [];\r\n }\r\n getVisibility() {\r\n return visibility_1.Visibility.Public;\r\n }\r\n isRedefinition() {\r\n return false;\r\n }\r\n isAbstract() {\r\n return false;\r\n }\r\n isStatic() {\r\n return false;\r\n }\r\n isEventHandler() {\r\n return false;\r\n }\r\n getParameters() {\r\n return this;\r\n }\r\n getParameterDefault(_parameter) {\r\n return undefined;\r\n }\r\n}\r\nclass BuiltIn {\r\n constructor() {\r\n this.row = 1;\r\n }\r\n buildDefinition(method, row) {\r\n const token = new tokens_1.Identifier(new position_1.Position(row, 1), method.name);\r\n return new BuiltInMethod(token, BuiltIn.filename, method, row);\r\n }\r\n searchBuiltin(name) {\r\n if (name === undefined) {\r\n return undefined;\r\n }\r\n const ret = [];\r\n // todo: \"pcre\" vs \"regex\", only one of these parameters are allowed\r\n // todo: \"pcre\", only possible from 755\r\n ret.push({ name: \"ABS\", mandatory: { \"val\": new basic_1.FloatType() }, return: new basic_1.IntegerType() });\r\n ret.push({ name: \"ACOS\", mandatory: { \"val\": new basic_1.FloatType() }, return: new basic_1.FloatType() });\r\n ret.push({ name: \"ASIN\", mandatory: { \"val\": new basic_1.FloatType() }, return: new basic_1.FloatType() });\r\n ret.push({ name: \"ATAN\", mandatory: { \"val\": new basic_1.FloatType() }, return: new basic_1.FloatType() });\r\n ret.push({ name: \"BIT-SET\", mandatory: { \"val\": new basic_1.IntegerType() }, return: new basic_1.XStringType(), version: version_1.Version.v702 });\r\n ret.push({ name: \"BOOLC\", mandatory: { \"val\": new basic_1.StringType() }, return: new basic_1.StringType(), version: version_1.Version.v702 });\r\n ret.push({ name: \"BOOLX\", mandatory: { \"bool\": new basic_1.StringType() }, optional: { \"bit\": new basic_1.IntegerType() }, return: new basic_1.XStringType(), version: version_1.Version.v702 });\r\n ret.push({ name: \"CEIL\", mandatory: { \"val\": new basic_1.FloatType() }, return: new basic_1.IntegerType() });\r\n ret.push({ name: \"CHAR_OFF\", mandatory: { \"val\": new basic_1.StringType(), \"add\": new basic_1.IntegerType() }, optional: { \"off\": new basic_1.IntegerType() }, return: new basic_1.IntegerType(), version: version_1.Version.v702 });\r\n ret.push({ name: \"CHARLEN\", mandatory: { \"val\": new basic_1.StringType() }, return: new basic_1.IntegerType() });\r\n ret.push({ name: \"CMAX\", mandatory: { \"val1\": new basic_1.StringType(), \"val2\": new basic_1.StringType() }, optional: { \"val3\": new basic_1.StringType(), \"val4\": new basic_1.StringType(), \"val5\": new basic_1.StringType(), \"val6\": new basic_1.StringType(), \"val7\": new basic_1.StringType(), \"val9\": new basic_1.StringType() }, return: new basic_1.StringType(), version: version_1.Version.v702 });\r\n ret.push({ name: \"CMIN\", mandatory: { \"val1\": new basic_1.StringType(), \"val2\": new basic_1.StringType() }, optional: { \"val3\": new basic_1.StringType(), \"val4\": new basic_1.StringType(), \"val5\": new basic_1.StringType(), \"val6\": new basic_1.StringType(), \"val7\": new basic_1.StringType(), \"val9\": new basic_1.StringType() }, return: new basic_1.StringType(), version: version_1.Version.v702 });\r\n ret.push({ name: \"CONCAT_LINES_OF\", mandatory: { \"table\": new basic_1.TableType(new basic_1.AnyType(), { withHeader: false }) }, optional: { \"sep\": new basic_1.StringType() }, return: new basic_1.StringType(), version: version_1.Version.v702 });\r\n ret.push({ name: \"CONDENSE\", mandatory: { \"val\": new basic_1.StringType() }, optional: { \"del\": new basic_1.StringType(), \"from\": new basic_1.StringType(), \"to\": new basic_1.StringType() }, return: new basic_1.StringType(), version: version_1.Version.v702 });\r\n ret.push({ name: \"CONTAINS\", mandatory: { \"val\": new basic_1.StringType() }, optional: { \"sub\": new basic_1.StringType(), \"start\": new basic_1.StringType(), \"end\": new basic_1.StringType(), \"regex\": new basic_1.StringType(), \"pcre\": new basic_1.StringType(), \"case\": new basic_1.CharacterType(1), \"off\": new basic_1.IntegerType(), \"len\": new basic_1.IntegerType(), \"occ\": new basic_1.IntegerType() }, return: new basic_1.CharacterType(1), version: version_1.Version.v702 });\r\n ret.push({ name: \"CONTAINS_ANY_NOT_OF\", mandatory: { \"val\": new basic_1.StringType() }, optional: { \"sub\": new basic_1.StringType(), \"start\": new basic_1.StringType(), \"end\": new basic_1.StringType(), \"off\": new basic_1.IntegerType(), \"len\": new basic_1.IntegerType(), \"occ\": new basic_1.IntegerType() }, return: new basic_1.CharacterType(1), version: version_1.Version.v702 });\r\n ret.push({ name: \"CONTAINS_ANY_OF\", mandatory: { \"val\": new basic_1.StringType() }, optional: { \"sub\": new basic_1.StringType(), \"start\": new basic_1.StringType(), \"end\": new basic_1.StringType(), \"off\": new basic_1.IntegerType(), \"len\": new basic_1.IntegerType(), \"occ\": new basic_1.IntegerType() }, return: new basic_1.CharacterType(1), version: version_1.Version.v702 });\r\n ret.push({ name: \"COS\", mandatory: { \"val\": new basic_1.FloatType() }, return: new basic_1.FloatType() });\r\n ret.push({ name: \"COSH\", mandatory: { \"val\": new basic_1.FloatType() }, return: new basic_1.FloatType() });\r\n ret.push({ name: \"COUNT\", mandatory: { \"val\": new basic_1.StringType() }, optional: { \"sub\": new basic_1.StringType(), \"regex\": new basic_1.StringType(), \"pcre\": new basic_1.StringType(), \"case\": new basic_1.CharacterType(1), \"off\": new basic_1.IntegerType(), \"len\": new basic_1.IntegerType() }, return: new basic_1.StringType(), version: version_1.Version.v702 });\r\n ret.push({ name: \"COUNT_ANY_NOT_OF\", mandatory: { \"val\": new basic_1.StringType() }, optional: { \"sub\": new basic_1.StringType(), \"regex\": new basic_1.StringType(), \"pcre\": new basic_1.StringType(), \"case\": new basic_1.CharacterType(1), \"off\": new basic_1.IntegerType(), \"len\": new basic_1.IntegerType() }, return: new basic_1.StringType(), version: version_1.Version.v702 });\r\n ret.push({ name: \"COUNT_ANY_OF\", mandatory: { \"val\": new basic_1.StringType() }, optional: { \"sub\": new basic_1.StringType(), \"regex\": new basic_1.StringType(), \"pcre\": new basic_1.StringType(), \"case\": new basic_1.CharacterType(1), \"off\": new basic_1.IntegerType(), \"len\": new basic_1.IntegerType() }, return: new basic_1.StringType(), version: version_1.Version.v702 });\r\n ret.push({ name: \"DBMAXLEN\", mandatory: { \"val\": new basic_1.StringType() }, return: new basic_1.IntegerType() });\r\n ret.push({ name: \"DISTANCE\", mandatory: { \"val1\": new basic_1.StringType(), \"val2\": new basic_1.StringType() }, return: new basic_1.IntegerType(), version: version_1.Version.v702 });\r\n ret.push({ name: \"ESCAPE\", mandatory: { \"val\": new basic_1.StringType(), \"format\": new basic_1.StringType() }, return: new basic_1.StringType(), version: version_1.Version.v702 });\r\n ret.push({ name: \"EXP\", mandatory: { \"val\": new basic_1.FloatType() }, return: new basic_1.FloatType() });\r\n ret.push({ name: \"FIND\", mandatory: { \"val\": new basic_1.StringType() }, optional: { \"sub\": new basic_1.StringType(), \"regex\": new basic_1.StringType(), \"pcre\": new basic_1.StringType(), \"case\": new basic_1.CharacterType(1), \"off\": new basic_1.IntegerType(), \"len\": new basic_1.IntegerType(), \"occ\": new basic_1.IntegerType() }, return: new basic_1.IntegerType(), version: version_1.Version.v702 });\r\n ret.push({ name: \"FIND_ANY_NOT_OF\", mandatory: { \"val\": new basic_1.StringType() }, optional: { \"sub\": new basic_1.StringType(), \"off\": new basic_1.IntegerType(), \"len\": new basic_1.IntegerType(), \"occ\": new basic_1.IntegerType() }, return: new basic_1.IntegerType(), version: version_1.Version.v702 });\r\n ret.push({ name: \"FIND_ANY_OF\", mandatory: { \"val\": new basic_1.StringType() }, optional: { \"sub\": new basic_1.StringType(), \"off\": new basic_1.IntegerType(), \"len\": new basic_1.IntegerType(), \"occ\": new basic_1.IntegerType() }, return: new basic_1.IntegerType(), version: version_1.Version.v702 });\r\n ret.push({ name: \"FIND_END\", mandatory: { \"val\": new basic_1.StringType() }, optional: { \"sub\": new basic_1.StringType(), \"regex\": new basic_1.StringType(), \"pcre\": new basic_1.StringType(), \"case\": new basic_1.CharacterType(1), \"off\": new basic_1.IntegerType(), \"len\": new basic_1.IntegerType(), \"occ\": new basic_1.IntegerType() }, return: new basic_1.IntegerType(), version: version_1.Version.v702 });\r\n ret.push({ name: \"FLOOR\", mandatory: { \"val\": new basic_1.FloatType() }, return: new basic_1.IntegerType() });\r\n ret.push({ name: \"FRAC\", mandatory: { \"val\": new basic_1.FloatType() }, return: new basic_1.IntegerType() });\r\n ret.push({ name: \"FROM_MIXED\", mandatory: { \"val\": new basic_1.StringType() }, optional: { \"case\": new basic_1.CharacterType(1), \"sep\": new basic_1.IntegerType(), \"min\": new basic_1.IntegerType() }, return: new basic_1.StringType(), version: version_1.Version.v702 });\r\n ret.push({ name: \"INSERT\", mandatory: { \"val\": new basic_1.StringType(), \"sub\": new basic_1.StringType() }, optional: { \"off\": new basic_1.IntegerType() }, return: new basic_1.StringType(), version: version_1.Version.v702 });\r\n ret.push({ name: \"IPOW\", mandatory: { \"base\": new basic_1.FloatType(), \"exp\": new basic_1.FloatType() }, return: new basic_1.IntegerType(), version: version_1.Version.v740sp02 });\r\n ret.push({ name: \"LINE_EXISTS\", mandatory: { \"val\": new basic_1.TableType(new basic_1.AnyType(), { withHeader: false }) }, return: new basic_1.CharacterType(1), version: version_1.Version.v740sp02 });\r\n ret.push({ name: \"LINE_INDEX\", mandatory: { \"val\": new basic_1.StringType() }, return: new basic_1.IntegerType(), version: version_1.Version.v740sp02 });\r\n ret.push({ name: \"LINES\", mandatory: { \"val\": new basic_1.TableType(new basic_1.AnyType(), { withHeader: false }) }, return: new basic_1.IntegerType() });\r\n ret.push({ name: \"LOG\", mandatory: { \"val\": new basic_1.FloatType() }, return: new basic_1.FloatType() });\r\n ret.push({ name: \"LOG10\", mandatory: { \"val\": new basic_1.FloatType() }, return: new basic_1.FloatType() });\r\n ret.push({ name: \"MATCH\", mandatory: { \"val\": new basic_1.StringType() }, optional: { \"case\": new basic_1.CharacterType(1), \"regex\": new basic_1.StringType(), \"pcre\": new basic_1.StringType(), \"occ\": new basic_1.IntegerType() }, return: new basic_1.StringType(), version: version_1.Version.v702 });\r\n ret.push({ name: \"MATCHES\", mandatory: { \"val\": new basic_1.StringType() }, optional: { \"case\": new basic_1.CharacterType(1), \"regex\": new basic_1.StringType(), \"pcre\": new basic_1.StringType(), \"off\": new basic_1.IntegerType(), \"len\": new basic_1.IntegerType() }, return: new basic_1.CharacterType(1), version: version_1.Version.v702 });\r\n ret.push({ name: \"NMAX\", mandatory: { \"val1\": new basic_1.StringType(), \"val2\": new basic_1.StringType() }, optional: { \"val3\": new basic_1.StringType(), \"val4\": new basic_1.StringType(), \"val5\": new basic_1.StringType(), \"val6\": new basic_1.StringType(), \"val7\": new basic_1.StringType(), \"val8\": new basic_1.StringType(), \"val9\": new basic_1.StringType() }, return: new basic_1.IntegerType(), version: version_1.Version.v702 });\r\n ret.push({ name: \"NMIN\", mandatory: { \"val1\": new basic_1.StringType(), \"val2\": new basic_1.StringType() }, optional: { \"val3\": new basic_1.StringType(), \"val4\": new basic_1.StringType(), \"val5\": new basic_1.StringType(), \"val6\": new basic_1.StringType(), \"val7\": new basic_1.StringType(), \"val8\": new basic_1.StringType(), \"val9\": new basic_1.StringType() }, return: new basic_1.IntegerType(), version: version_1.Version.v702 });\r\n ret.push({ name: \"NUMOFCHAR\", mandatory: { \"val\": new basic_1.StringType() }, return: new basic_1.IntegerType() });\r\n ret.push({ name: \"REPEAT\", mandatory: { \"val\": new basic_1.StringType(), \"occ\": new basic_1.IntegerType() }, return: new basic_1.StringType(), version: version_1.Version.v702 });\r\n ret.push({ name: \"REPLACE\", mandatory: { \"val\": new basic_1.StringType(), \"with\": new basic_1.StringType() }, optional: { \"sub\": new basic_1.StringType(), \"regex\": new basic_1.StringType(), \"pcre\": new basic_1.StringType(), \"case\": new basic_1.CharacterType(1), \"off\": new basic_1.IntegerType(), \"len\": new basic_1.IntegerType(), \"occ\": new basic_1.IntegerType() }, return: new basic_1.StringType(), version: version_1.Version.v702 });\r\n ret.push({ name: \"RESCALE\", mandatory: { \"val\": new basic_1.FloatType() }, optional: { \"dec\": new basic_1.IntegerType(), \"prec\": new basic_1.IntegerType(), \"mode\": new basic_1.IntegerType() }, return: new basic_1.FloatType(), version: version_1.Version.v702 });\r\n ret.push({ name: \"REVERSE\", mandatory: { \"val\": new basic_1.StringType() }, return: new basic_1.StringType(), version: version_1.Version.v702 });\r\n ret.push({ name: \"ROUND\", mandatory: { \"val\": new basic_1.FloatType() }, optional: { \"dec\": new basic_1.IntegerType(), \"prec\": new basic_1.IntegerType(), \"mode\": new basic_1.IntegerType() }, return: new basic_1.IntegerType(), version: version_1.Version.v702 });\r\n ret.push({ name: \"SEGMENT\", mandatory: { \"val\": new basic_1.StringType(), \"index\": new basic_1.IntegerType() }, optional: { \"sep\": new basic_1.StringType(), \"space\": new basic_1.StringType() }, return: new basic_1.StringType(), version: version_1.Version.v702 });\r\n ret.push({ name: \"SHIFT_LEFT\", mandatory: { \"val\": new basic_1.StringType() }, optional: { \"sub\": new basic_1.StringType(), \"places\": new basic_1.IntegerType(), \"circular\": new basic_1.IntegerType() }, return: new basic_1.StringType(), version: version_1.Version.v702 });\r\n ret.push({ name: \"SHIFT_RIGHT\", mandatory: { \"val\": new basic_1.StringType() }, optional: { \"sub\": new basic_1.StringType(), \"places\": new basic_1.IntegerType(), \"circular\": new basic_1.IntegerType() }, return: new basic_1.StringType(), version: version_1.Version.v702 });\r\n ret.push({ name: \"SIGN\", mandatory: { \"val\": new basic_1.FloatType() }, return: new basic_1.IntegerType() });\r\n ret.push({ name: \"SIN\", mandatory: { \"val\": new basic_1.FloatType() }, return: new basic_1.FloatType() });\r\n ret.push({ name: \"SINH\", mandatory: { \"val\": new basic_1.FloatType() }, return: new basic_1.FloatType() });\r\n ret.push({ name: \"SQRT\", mandatory: { \"val\": new basic_1.FloatType() }, return: new basic_1.FloatType() });\r\n ret.push({ name: \"STRLEN\", mandatory: { \"val\": new basic_1.StringType() }, return: new basic_1.IntegerType() });\r\n ret.push({ name: \"SUBSTRING\", mandatory: { \"val\": new basic_1.StringType() }, optional: { \"off\": new basic_1.IntegerType(), \"len\": new basic_1.IntegerType() }, return: new basic_1.StringType(), version: version_1.Version.v702 });\r\n ret.push({ name: \"SUBSTRING_AFTER\", mandatory: { \"val\": new basic_1.StringType() }, optional: { \"sub\": new basic_1.StringType(), \"regex\": new basic_1.StringType(), \"pcre\": new basic_1.StringType(), \"case\": new basic_1.CharacterType(1), \"len\": new basic_1.IntegerType(), \"occ\": new basic_1.IntegerType() }, return: new basic_1.StringType(), version: version_1.Version.v702 });\r\n ret.push({ name: \"SUBSTRING_BEFORE\", mandatory: { \"val\": new basic_1.StringType() }, optional: { \"sub\": new basic_1.StringType(), \"regex\": new basic_1.StringType(), \"pcre\": new basic_1.StringType(), \"case\": new basic_1.CharacterType(1), \"len\": new basic_1.IntegerType(), \"occ\": new basic_1.IntegerType() }, return: new basic_1.StringType(), version: version_1.Version.v702 });\r\n ret.push({ name: \"SUBSTRING_FROM\", mandatory: { \"val\": new basic_1.StringType() }, optional: { \"sub\": new basic_1.StringType(), \"regex\": new basic_1.StringType(), \"pcre\": new basic_1.StringType(), \"case\": new basic_1.CharacterType(1), \"len\": new basic_1.IntegerType(), \"occ\": new basic_1.IntegerType() }, return: new basic_1.StringType(), version: version_1.Version.v702 });\r\n ret.push({ name: \"SUBSTRING_TO\", mandatory: { \"val\": new basic_1.StringType() }, optional: { \"sub\": new basic_1.StringType(), \"regex\": new basic_1.StringType(), \"pcre\": new basic_1.StringType(), \"case\": new basic_1.CharacterType(1), \"len\": new basic_1.IntegerType(), \"occ\": new basic_1.IntegerType() }, return: new basic_1.StringType(), version: version_1.Version.v702 });\r\n ret.push({ name: \"TAN\", mandatory: { \"val\": new basic_1.FloatType() }, return: new basic_1.FloatType() });\r\n ret.push({ name: \"TANH\", mandatory: { \"val\": new basic_1.FloatType() }, return: new basic_1.FloatType() });\r\n ret.push({ name: \"TO_LOWER\", mandatory: { \"val\": new basic_1.StringType() }, return: new basic_1.StringType(), version: version_1.Version.v702 });\r\n ret.push({ name: \"TO_MIXED\", mandatory: { \"val\": new basic_1.StringType() }, optional: { \"case\": new basic_1.CharacterType(1), \"sep\": new basic_1.IntegerType(), \"min\": new basic_1.IntegerType() }, return: new basic_1.StringType(), version: version_1.Version.v702 });\r\n ret.push({ name: \"TO_UPPER\", mandatory: { \"val\": new basic_1.StringType() }, return: new basic_1.StringType(), version: version_1.Version.v702 });\r\n ret.push({ name: \"TRANSLATE\", mandatory: { \"val\": new basic_1.StringType(), \"from\": new basic_1.StringType(), \"to\": new basic_1.StringType() }, return: new basic_1.StringType(), version: version_1.Version.v702 });\r\n ret.push({ name: \"TRUNC\", mandatory: { \"val\": new basic_1.FloatType() }, return: new basic_1.IntegerType() });\r\n ret.push({ name: \"UTCLONG_ADD\", mandatory: { \"val\": new basic_1.UTCLongType() }, optional: { \"days\": new basic_1.IntegerType(), \"hour\": new basic_1.IntegerType(), \"minutes\": new basic_1.IntegerType(), \"seconds\": new basic_1.FloatType() }, return: new basic_1.UTCLongType(), version: version_1.Version.v754 });\r\n ret.push({ name: \"UTCLONG_CURRENT\", return: new basic_1.UTCLongType(), version: version_1.Version.v754 });\r\n ret.push({ name: \"UTCLONG_DIFF\", mandatory: { \"high\": new basic_1.UTCLongType(), \"low\": new basic_1.UTCLongType() }, return: new basic_1.FloatType(), version: version_1.Version.v754 });\r\n ret.push({ name: \"XSDBOOL\", mandatory: { \"val\": new basic_1.StringType() }, return: new basic_1.CharacterType(1), version: version_1.Version.v740sp08 });\r\n ret.push({ name: \"XSTRLEN\", mandatory: { \"val\": new basic_1.XStringType() }, return: new basic_1.IntegerType() });\r\n // todo, optimize, use hash map\r\n const index = ret.findIndex(a => a.name === name.toUpperCase());\r\n if (index < 0) {\r\n return undefined;\r\n }\r\n return this.buildDefinition(ret[index], index);\r\n }\r\n getTypes() {\r\n const ret = this.buildSY();\r\n const id = new tokens_1.Identifier(new position_1.Position(1, 1), \"abap_bool\");\r\n ret.push(new _typed_identifier_1.TypedIdentifier(id, BuiltIn.filename, new basic_1.CharacterType(1, \"ABAP_BOOL\")));\r\n return ret;\r\n }\r\n get(extras) {\r\n const ret = this.buildSY();\r\n ret.push(this.buildVariable(\"screen\")); // todo, add structure, or alternatively make native Statements\r\n ret.push(this.buildConstant(\"%_BACKSPACE\"));\r\n ret.push(this.buildConstant(\"%_CHARSIZE\"));\r\n ret.push(this.buildConstant(\"%_CR_LF\"));\r\n ret.push(this.buildConstant(\"%_ENDIAN\"));\r\n ret.push(this.buildConstant(\"%_FORMFEED\"));\r\n ret.push(this.buildConstant(\"%_HORIZONTAL_TAB\"));\r\n ret.push(this.buildConstant(\"%_MAXCHAR\"));\r\n ret.push(this.buildConstant(\"%_MINCHAR\"));\r\n ret.push(this.buildConstant(\"%_NEWLINE\"));\r\n ret.push(this.buildConstant(\"%_VERTICAL_TAB\"));\r\n ret.push(this.buildConstant(\"abap_false\", new basic_1.CharacterType(1, \"ABAP_BOOL\"), \"' '\"));\r\n ret.push(this.buildConstant(\"abap_true\", new basic_1.CharacterType(1, \"ABAP_BOOL\"), \"'X'\"));\r\n ret.push(this.buildConstant(\"abap_undefined\", new basic_1.CharacterType(1, \"ABAP_BOOL\"), \"'-'\"));\r\n ret.push(this.buildConstant(\"abap_off\", new basic_1.CharacterType(1, \"ABAP_BOOL\"), \"' '\"));\r\n ret.push(this.buildConstant(\"abap_on\", new basic_1.CharacterType(1, \"ABAP_BOOL\"), \"'X'\"));\r\n ret.push(this.buildConstant(\"col_background\", new basic_1.IntegerType(), \"0\"));\r\n ret.push(this.buildConstant(\"col_heading\", new basic_1.IntegerType(), \"1\"));\r\n ret.push(this.buildConstant(\"col_key\", new basic_1.IntegerType(), \"4\"));\r\n ret.push(this.buildConstant(\"col_negative\", new basic_1.IntegerType(), \"6\"));\r\n ret.push(this.buildConstant(\"col_normal\", new basic_1.IntegerType(), \"2\"));\r\n ret.push(this.buildConstant(\"col_positive\", new basic_1.IntegerType(), \"5\"));\r\n ret.push(this.buildConstant(\"col_total\", new basic_1.IntegerType(), \"3\"));\r\n ret.push(this.buildConstant(\"space\", new basic_1.CharacterType(1), \"' '\"));\r\n for (const e of extras) {\r\n const id = new tokens_1.Identifier(new position_1.Position(this.row++, 1), e);\r\n ret.push(new _typed_identifier_1.TypedIdentifier(id, BuiltIn.filename, new basic_1.VoidType(e), [\"read_only\" /* ReadOnly */, \"built-in\" /* BuiltIn */], \"'?'\"));\r\n }\r\n return ret;\r\n }\r\n /////////////////////////////\r\n buildSY() {\r\n const components = [];\r\n components.push({ name: \"abcde\", type: new basic_1.CharacterType(26, \"sy-abcde\") });\r\n components.push({ name: \"batch\", type: new basic_1.CharacterType(1, \"sy-batch\") });\r\n components.push({ name: \"binpt\", type: new basic_1.CharacterType(1, \"sy-binpt\") });\r\n components.push({ name: \"calld\", type: new basic_1.CharacterType(1, \"sy-calld\") });\r\n components.push({ name: \"callr\", type: new basic_1.CharacterType(8, \"sy-callr\") });\r\n components.push({ name: \"colno\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"cpage\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"cprog\", type: new basic_1.CharacterType(40, \"sy-cprog\") });\r\n components.push({ name: \"cucol\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"curow\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"datar\", type: new basic_1.CharacterType(1, \"sy-datar\") });\r\n components.push({ name: \"datlo\", type: new basic_1.DateType() });\r\n components.push({ name: \"datum\", type: new basic_1.DateType() });\r\n components.push({ name: \"dayst\", type: new basic_1.CharacterType(1) });\r\n components.push({ name: \"dbcnt\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"dbnam\", type: new basic_1.CharacterType(20, \"sy-dbnam\") });\r\n components.push({ name: \"dbsys\", type: new basic_1.CharacterType(10, \"sy-dbsys\") });\r\n components.push({ name: \"dyngr\", type: new basic_1.CharacterType(4, \"sy-dyngr\") });\r\n components.push({ name: \"dynnr\", type: new basic_1.CharacterType(4, \"sy-dynnr\") });\r\n components.push({ name: \"fdayw\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"fdpos\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"fleng\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"folen\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"host\", type: new basic_1.CharacterType(32, \"sy-host\") });\r\n components.push({ name: \"index\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"langu\", type: new basic_1.CharacterType(1, \"sy-langu\") });\r\n components.push({ name: \"ldbpg\", type: new basic_1.CharacterType(40, \"sy-ldbpg\") });\r\n components.push({ name: \"pdest\", type: new basic_1.CharacterType(4, \"sy-pdest\") });\r\n components.push({ name: \"lilli\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"linct\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"linno\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"linsz\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"lisel\", type: new basic_1.CharacterType(255, \"sy-lisel\") });\r\n components.push({ name: \"listi\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"loopc\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"lsind\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"macol\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"mandt\", type: new basic_1.CharacterType(3, \"sy-mandt\") });\r\n components.push({ name: \"marow\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"modno\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"msgid\", type: new basic_1.CharacterType(20, \"sy-msgid\") });\r\n components.push({ name: \"msgli\", type: new basic_1.CharacterType(60, \"sy-msgli\") });\r\n components.push({ name: \"msgno\", type: new basic_1.NumericType(3, \"sy-msgno\") });\r\n components.push({ name: \"msgty\", type: new basic_1.CharacterType(1, \"sy-msgty\") });\r\n components.push({ name: \"msgv1\", type: new basic_1.CharacterType(50, \"sy-msgv1\") });\r\n components.push({ name: \"msgv2\", type: new basic_1.CharacterType(50, \"sy-msgv2\") });\r\n components.push({ name: \"msgv3\", type: new basic_1.CharacterType(50, \"sy-msgv3\") });\r\n components.push({ name: \"msgv4\", type: new basic_1.CharacterType(50, \"sy-msgv4\") });\r\n components.push({ name: \"opsys\", type: new basic_1.CharacterType(10, \"sy-opsys\") });\r\n components.push({ name: \"pagno\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"pfkey\", type: new basic_1.CharacterType(20, \"sy-pfkey\") });\r\n components.push({ name: \"repid\", type: new basic_1.CharacterType(40, \"sy-repid\") });\r\n components.push({ name: \"saprl\", type: new basic_1.CharacterType(4, \"sy-saprl\") });\r\n components.push({ name: \"scols\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"slset\", type: new basic_1.CharacterType(14, \"sy-slset\") });\r\n components.push({ name: \"spono\", type: new basic_1.CharacterType(10, \"sy-spono\") });\r\n components.push({ name: \"srows\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"staco\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"staro\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"stepl\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"subrc\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"sysid\", type: new basic_1.CharacterType(3, \"sy-sysid\") });\r\n components.push({ name: \"tabix\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"tcode\", type: new basic_1.CharacterType(20, \"sy-tcode\") });\r\n components.push({ name: \"tfill\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"timlo\", type: new basic_1.TimeType() });\r\n components.push({ name: \"title\", type: new basic_1.CharacterType(70, \"sy-title\") });\r\n components.push({ name: \"tleng\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"tvar0\", type: new basic_1.CharacterType(20, \"sy-tvar0\") });\r\n components.push({ name: \"tvar1\", type: new basic_1.CharacterType(20, \"sy-tvar1\") });\r\n components.push({ name: \"tvar2\", type: new basic_1.CharacterType(20, \"sy-tvar2\") });\r\n components.push({ name: \"tvar3\", type: new basic_1.CharacterType(20, \"sy-tvar3\") });\r\n components.push({ name: \"tvar4\", type: new basic_1.CharacterType(20, \"sy-tvar4\") });\r\n components.push({ name: \"tvar5\", type: new basic_1.CharacterType(20, \"sy-tvar5\") });\r\n components.push({ name: \"tvar6\", type: new basic_1.CharacterType(20, \"sy-tvar6\") });\r\n components.push({ name: \"tvar7\", type: new basic_1.CharacterType(20, \"sy-tvar7\") });\r\n components.push({ name: \"tvar8\", type: new basic_1.CharacterType(20, \"sy-tvar8\") });\r\n components.push({ name: \"tvar9\", type: new basic_1.CharacterType(20, \"sy-tvar9\") });\r\n components.push({ name: \"tzone\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"ucomm\", type: new basic_1.CharacterType(70, \"sy-ucomm\") });\r\n components.push({ name: \"uline\", type: new basic_1.CharacterType(255, \"sy-uline\") });\r\n components.push({ name: \"uname\", type: new basic_1.CharacterType(12, \"sy-uname\") });\r\n components.push({ name: \"uzeit\", type: new basic_1.TimeType() });\r\n components.push({ name: \"vline\", type: new basic_1.CharacterType(1, \"sy-vline\") });\r\n components.push({ name: \"wtitl\", type: new basic_1.CharacterType(1, \"sy-wtitl\") });\r\n components.push({ name: \"zonlo\", type: new basic_1.CharacterType(6, \"sy-zonlo\") });\r\n const type = new basic_1.StructureType(components);\r\n const id1 = new tokens_1.Identifier(new position_1.Position(this.row++, 1), \"sy\");\r\n const sy = new _typed_identifier_1.TypedIdentifier(id1, BuiltIn.filename, type, [\"read_only\" /* ReadOnly */, \"built-in\" /* BuiltIn */]);\r\n const id2 = new tokens_1.Identifier(new position_1.Position(this.row++, 1), \"syst\");\r\n const syst = new _typed_identifier_1.TypedIdentifier(id2, BuiltIn.filename, type, [\"read_only\" /* ReadOnly */, \"built-in\" /* BuiltIn */]);\r\n return [sy, syst];\r\n }\r\n buildConstant(name, type, value) {\r\n const id = new tokens_1.Identifier(new position_1.Position(this.row++, 1), name);\r\n if (type === undefined) {\r\n type = new basic_1.VoidType(name);\r\n }\r\n if (value === undefined) {\r\n value = \"'?'\";\r\n }\r\n return new _typed_identifier_1.TypedIdentifier(id, BuiltIn.filename, type, [\"read_only\" /* ReadOnly */, \"built-in\" /* BuiltIn */], value);\r\n }\r\n buildVariable(name) {\r\n const id = new tokens_1.Identifier(new position_1.Position(this.row++, 1), name);\r\n return new _typed_identifier_1.TypedIdentifier(id, BuiltIn.filename, new basic_1.VoidType(name), [\"built-in\" /* BuiltIn */]);\r\n }\r\n}\r\nexports.BuiltIn = BuiltIn;\r\nBuiltIn.filename = \"_builtin.prog.abap\";\r\n//# sourceMappingURL=_builtin.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/abap/5_syntax/_builtin.js?");
|
|
6377
|
+
eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.BuiltIn = void 0;\r\n/* eslint-disable max-len */\r\nconst _typed_identifier_1 = __webpack_require__(/*! ../types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\r\nconst basic_1 = __webpack_require__(/*! ../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\r\nconst tokens_1 = __webpack_require__(/*! ../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\r\nconst position_1 = __webpack_require__(/*! ../../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\r\nconst visibility_1 = __webpack_require__(/*! ../4_file_information/visibility */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/visibility.js\");\r\nconst _identifier_1 = __webpack_require__(/*! ../4_file_information/_identifier */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/_identifier.js\");\r\nconst version_1 = __webpack_require__(/*! ../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\r\nclass BuiltInMethod extends _identifier_1.Identifier {\r\n constructor(token, filename, method, row) {\r\n super(token, filename);\r\n this.method = method;\r\n this.row = row;\r\n }\r\n getRequiredParameters() {\r\n return [];\r\n }\r\n getOptional() {\r\n throw new Error(\"BuiltInMethod->Method not implemented.\");\r\n }\r\n getAll() {\r\n throw new Error(\"BuiltInMethod->getAll, Method not implemented.\");\r\n }\r\n getImporting() {\r\n const ret = [];\r\n for (const i in this.method.mandatory) {\r\n const id = new tokens_1.Identifier(new position_1.Position(this.row, 1), i);\r\n ret.push(new _typed_identifier_1.TypedIdentifier(id, BuiltIn.filename, this.method.mandatory[i]));\r\n }\r\n for (const i in this.method.optional) {\r\n const id = new tokens_1.Identifier(new position_1.Position(this.row, 1), i);\r\n ret.push(new _typed_identifier_1.TypedIdentifier(id, BuiltIn.filename, this.method.optional[i]));\r\n }\r\n return ret;\r\n }\r\n getDefaultImporting() {\r\n if (this.method.mandatory === undefined) {\r\n return undefined;\r\n }\r\n const keys = Object.keys(this.method.mandatory);\r\n if (keys.length === 1) {\r\n return keys[0];\r\n }\r\n return undefined;\r\n }\r\n getExporting() {\r\n return [];\r\n }\r\n getRaising() {\r\n return [];\r\n }\r\n getChanging() {\r\n return [];\r\n }\r\n getReturning() {\r\n const id = new tokens_1.Identifier(new position_1.Position(this.row, 1), \"ret\");\r\n return new _typed_identifier_1.TypedIdentifier(id, BuiltIn.filename, this.method.return);\r\n }\r\n getExceptions() {\r\n return [];\r\n }\r\n getVisibility() {\r\n return visibility_1.Visibility.Public;\r\n }\r\n isRedefinition() {\r\n return false;\r\n }\r\n isAbstract() {\r\n return false;\r\n }\r\n isStatic() {\r\n return false;\r\n }\r\n isEventHandler() {\r\n return false;\r\n }\r\n getParameters() {\r\n return this;\r\n }\r\n getParameterDefault(_parameter) {\r\n return undefined;\r\n }\r\n}\r\nclass BuiltIn {\r\n constructor() {\r\n this.row = 1;\r\n }\r\n buildDefinition(method, row) {\r\n const token = new tokens_1.Identifier(new position_1.Position(row, 1), method.name);\r\n return new BuiltInMethod(token, BuiltIn.filename, method, row);\r\n }\r\n searchBuiltin(name) {\r\n if (name === undefined) {\r\n return undefined;\r\n }\r\n // todo, optimize, use hash map\r\n const index = BuiltIn.methods.findIndex(a => a.name === name.toUpperCase());\r\n if (index < 0) {\r\n return undefined;\r\n }\r\n return this.buildDefinition(BuiltIn.methods[index], index);\r\n }\r\n getTypes() {\r\n const ret = this.buildSY();\r\n const id = new tokens_1.Identifier(new position_1.Position(1, 1), \"abap_bool\");\r\n ret.push(new _typed_identifier_1.TypedIdentifier(id, BuiltIn.filename, new basic_1.CharacterType(1, \"ABAP_BOOL\")));\r\n return ret;\r\n }\r\n get(extras) {\r\n const ret = this.buildSY();\r\n ret.push(this.buildVariable(\"screen\")); // todo, add structure, or alternatively make native Statements\r\n ret.push(this.buildConstant(\"%_BACKSPACE\"));\r\n ret.push(this.buildConstant(\"%_CHARSIZE\"));\r\n ret.push(this.buildConstant(\"%_CR_LF\"));\r\n ret.push(this.buildConstant(\"%_ENDIAN\"));\r\n ret.push(this.buildConstant(\"%_FORMFEED\"));\r\n ret.push(this.buildConstant(\"%_HORIZONTAL_TAB\"));\r\n ret.push(this.buildConstant(\"%_MAXCHAR\"));\r\n ret.push(this.buildConstant(\"%_MINCHAR\"));\r\n ret.push(this.buildConstant(\"%_NEWLINE\"));\r\n ret.push(this.buildConstant(\"%_VERTICAL_TAB\"));\r\n ret.push(this.buildConstant(\"abap_false\", new basic_1.CharacterType(1, \"ABAP_BOOL\"), \"' '\"));\r\n ret.push(this.buildConstant(\"abap_true\", new basic_1.CharacterType(1, \"ABAP_BOOL\"), \"'X'\"));\r\n ret.push(this.buildConstant(\"abap_undefined\", new basic_1.CharacterType(1, \"ABAP_BOOL\"), \"'-'\"));\r\n ret.push(this.buildConstant(\"abap_off\", new basic_1.CharacterType(1, \"ABAP_BOOL\"), \"' '\"));\r\n ret.push(this.buildConstant(\"abap_on\", new basic_1.CharacterType(1, \"ABAP_BOOL\"), \"'X'\"));\r\n ret.push(this.buildConstant(\"col_background\", new basic_1.IntegerType(), \"0\"));\r\n ret.push(this.buildConstant(\"col_heading\", new basic_1.IntegerType(), \"1\"));\r\n ret.push(this.buildConstant(\"col_key\", new basic_1.IntegerType(), \"4\"));\r\n ret.push(this.buildConstant(\"col_negative\", new basic_1.IntegerType(), \"6\"));\r\n ret.push(this.buildConstant(\"col_normal\", new basic_1.IntegerType(), \"2\"));\r\n ret.push(this.buildConstant(\"col_positive\", new basic_1.IntegerType(), \"5\"));\r\n ret.push(this.buildConstant(\"col_total\", new basic_1.IntegerType(), \"3\"));\r\n ret.push(this.buildConstant(\"space\", new basic_1.CharacterType(1), \"' '\"));\r\n for (const e of extras) {\r\n const id = new tokens_1.Identifier(new position_1.Position(this.row++, 1), e);\r\n ret.push(new _typed_identifier_1.TypedIdentifier(id, BuiltIn.filename, new basic_1.VoidType(e), [\"read_only\" /* ReadOnly */, \"built-in\" /* BuiltIn */], \"'?'\"));\r\n }\r\n return ret;\r\n }\r\n /////////////////////////////\r\n buildSY() {\r\n const components = [];\r\n components.push({ name: \"abcde\", type: new basic_1.CharacterType(26, \"sy-abcde\") });\r\n components.push({ name: \"batch\", type: new basic_1.CharacterType(1, \"sy-batch\") });\r\n components.push({ name: \"binpt\", type: new basic_1.CharacterType(1, \"sy-binpt\") });\r\n components.push({ name: \"calld\", type: new basic_1.CharacterType(1, \"sy-calld\") });\r\n components.push({ name: \"callr\", type: new basic_1.CharacterType(8, \"sy-callr\") });\r\n components.push({ name: \"colno\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"cpage\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"cprog\", type: new basic_1.CharacterType(40, \"sy-cprog\") });\r\n components.push({ name: \"cucol\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"curow\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"datar\", type: new basic_1.CharacterType(1, \"sy-datar\") });\r\n components.push({ name: \"datlo\", type: new basic_1.DateType() });\r\n components.push({ name: \"datum\", type: new basic_1.DateType() });\r\n components.push({ name: \"dayst\", type: new basic_1.CharacterType(1) });\r\n components.push({ name: \"dbcnt\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"dbnam\", type: new basic_1.CharacterType(20, \"sy-dbnam\") });\r\n components.push({ name: \"dbsys\", type: new basic_1.CharacterType(10, \"sy-dbsys\") });\r\n components.push({ name: \"dyngr\", type: new basic_1.CharacterType(4, \"sy-dyngr\") });\r\n components.push({ name: \"dynnr\", type: new basic_1.CharacterType(4, \"sy-dynnr\") });\r\n components.push({ name: \"fdayw\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"fdpos\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"fleng\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"folen\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"host\", type: new basic_1.CharacterType(32, \"sy-host\") });\r\n components.push({ name: \"index\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"langu\", type: new basic_1.CharacterType(1, \"sy-langu\") });\r\n components.push({ name: \"ldbpg\", type: new basic_1.CharacterType(40, \"sy-ldbpg\") });\r\n components.push({ name: \"pdest\", type: new basic_1.CharacterType(4, \"sy-pdest\") });\r\n components.push({ name: \"lilli\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"linct\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"linno\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"linsz\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"lisel\", type: new basic_1.CharacterType(255, \"sy-lisel\") });\r\n components.push({ name: \"listi\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"loopc\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"lsind\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"macol\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"mandt\", type: new basic_1.CharacterType(3, \"sy-mandt\") });\r\n components.push({ name: \"marow\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"modno\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"msgid\", type: new basic_1.CharacterType(20, \"sy-msgid\") });\r\n components.push({ name: \"msgli\", type: new basic_1.CharacterType(60, \"sy-msgli\") });\r\n components.push({ name: \"msgno\", type: new basic_1.NumericType(3, \"sy-msgno\") });\r\n components.push({ name: \"msgty\", type: new basic_1.CharacterType(1, \"sy-msgty\") });\r\n components.push({ name: \"msgv1\", type: new basic_1.CharacterType(50, \"sy-msgv1\") });\r\n components.push({ name: \"msgv2\", type: new basic_1.CharacterType(50, \"sy-msgv2\") });\r\n components.push({ name: \"msgv3\", type: new basic_1.CharacterType(50, \"sy-msgv3\") });\r\n components.push({ name: \"msgv4\", type: new basic_1.CharacterType(50, \"sy-msgv4\") });\r\n components.push({ name: \"opsys\", type: new basic_1.CharacterType(10, \"sy-opsys\") });\r\n components.push({ name: \"pagno\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"pfkey\", type: new basic_1.CharacterType(20, \"sy-pfkey\") });\r\n components.push({ name: \"repid\", type: new basic_1.CharacterType(40, \"sy-repid\") });\r\n components.push({ name: \"saprl\", type: new basic_1.CharacterType(4, \"sy-saprl\") });\r\n components.push({ name: \"scols\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"slset\", type: new basic_1.CharacterType(14, \"sy-slset\") });\r\n components.push({ name: \"spono\", type: new basic_1.CharacterType(10, \"sy-spono\") });\r\n components.push({ name: \"srows\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"staco\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"staro\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"stepl\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"subrc\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"sysid\", type: new basic_1.CharacterType(3, \"sy-sysid\") });\r\n components.push({ name: \"tabix\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"tcode\", type: new basic_1.CharacterType(20, \"sy-tcode\") });\r\n components.push({ name: \"tfill\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"timlo\", type: new basic_1.TimeType() });\r\n components.push({ name: \"title\", type: new basic_1.CharacterType(70, \"sy-title\") });\r\n components.push({ name: \"tleng\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"tvar0\", type: new basic_1.CharacterType(20, \"sy-tvar0\") });\r\n components.push({ name: \"tvar1\", type: new basic_1.CharacterType(20, \"sy-tvar1\") });\r\n components.push({ name: \"tvar2\", type: new basic_1.CharacterType(20, \"sy-tvar2\") });\r\n components.push({ name: \"tvar3\", type: new basic_1.CharacterType(20, \"sy-tvar3\") });\r\n components.push({ name: \"tvar4\", type: new basic_1.CharacterType(20, \"sy-tvar4\") });\r\n components.push({ name: \"tvar5\", type: new basic_1.CharacterType(20, \"sy-tvar5\") });\r\n components.push({ name: \"tvar6\", type: new basic_1.CharacterType(20, \"sy-tvar6\") });\r\n components.push({ name: \"tvar7\", type: new basic_1.CharacterType(20, \"sy-tvar7\") });\r\n components.push({ name: \"tvar8\", type: new basic_1.CharacterType(20, \"sy-tvar8\") });\r\n components.push({ name: \"tvar9\", type: new basic_1.CharacterType(20, \"sy-tvar9\") });\r\n components.push({ name: \"tzone\", type: new basic_1.IntegerType() });\r\n components.push({ name: \"ucomm\", type: new basic_1.CharacterType(70, \"sy-ucomm\") });\r\n components.push({ name: \"uline\", type: new basic_1.CharacterType(255, \"sy-uline\") });\r\n components.push({ name: \"uname\", type: new basic_1.CharacterType(12, \"sy-uname\") });\r\n components.push({ name: \"uzeit\", type: new basic_1.TimeType() });\r\n components.push({ name: \"vline\", type: new basic_1.CharacterType(1, \"sy-vline\") });\r\n components.push({ name: \"wtitl\", type: new basic_1.CharacterType(1, \"sy-wtitl\") });\r\n components.push({ name: \"zonlo\", type: new basic_1.CharacterType(6, \"sy-zonlo\") });\r\n const type = new basic_1.StructureType(components);\r\n const id1 = new tokens_1.Identifier(new position_1.Position(this.row++, 1), \"sy\");\r\n const sy = new _typed_identifier_1.TypedIdentifier(id1, BuiltIn.filename, type, [\"read_only\" /* ReadOnly */, \"built-in\" /* BuiltIn */]);\r\n const id2 = new tokens_1.Identifier(new position_1.Position(this.row++, 1), \"syst\");\r\n const syst = new _typed_identifier_1.TypedIdentifier(id2, BuiltIn.filename, type, [\"read_only\" /* ReadOnly */, \"built-in\" /* BuiltIn */]);\r\n return [sy, syst];\r\n }\r\n buildConstant(name, type, value) {\r\n const id = new tokens_1.Identifier(new position_1.Position(this.row++, 1), name);\r\n if (type === undefined) {\r\n type = new basic_1.VoidType(name);\r\n }\r\n if (value === undefined) {\r\n value = \"'?'\";\r\n }\r\n return new _typed_identifier_1.TypedIdentifier(id, BuiltIn.filename, type, [\"read_only\" /* ReadOnly */, \"built-in\" /* BuiltIn */], value);\r\n }\r\n buildVariable(name) {\r\n const id = new tokens_1.Identifier(new position_1.Position(this.row++, 1), name);\r\n return new _typed_identifier_1.TypedIdentifier(id, BuiltIn.filename, new basic_1.VoidType(name), [\"built-in\" /* BuiltIn */]);\r\n }\r\n}\r\nexports.BuiltIn = BuiltIn;\r\nBuiltIn.filename = \"_builtin.prog.abap\";\r\n// todo: \"pcre\" vs \"regex\", only one of these parameters are allowed\r\n// todo: \"pcre\", only possible from 755\r\nBuiltIn.methods = [\r\n {\r\n name: \"ABS\",\r\n mandatory: {\r\n \"val\": new basic_1.FloatType(),\r\n },\r\n return: new basic_1.IntegerType(),\r\n },\r\n {\r\n name: \"ACOS\",\r\n mandatory: {\r\n \"val\": new basic_1.FloatType(),\r\n },\r\n return: new basic_1.FloatType(),\r\n },\r\n {\r\n name: \"ASIN\",\r\n mandatory: {\r\n \"val\": new basic_1.FloatType(),\r\n },\r\n return: new basic_1.FloatType(),\r\n },\r\n {\r\n name: \"ATAN\",\r\n mandatory: {\r\n \"val\": new basic_1.FloatType(),\r\n },\r\n return: new basic_1.FloatType(),\r\n },\r\n {\r\n name: \"BIT-SET\",\r\n mandatory: {\r\n \"val\": new basic_1.IntegerType(),\r\n },\r\n return: new basic_1.XStringType(),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"BOOLC\",\r\n mandatory: {\r\n \"val\": new basic_1.StringType(),\r\n },\r\n return: new basic_1.StringType(),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"BOOLX\",\r\n mandatory: {\r\n \"bool\": new basic_1.StringType(),\r\n },\r\n optional: {\r\n \"bit\": new basic_1.IntegerType(),\r\n },\r\n return: new basic_1.XStringType(),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"CEIL\",\r\n mandatory: {\r\n \"val\": new basic_1.FloatType(),\r\n },\r\n return: new basic_1.IntegerType(),\r\n },\r\n {\r\n name: \"CHAR_OFF\",\r\n mandatory: {\r\n \"val\": new basic_1.StringType(),\r\n \"add\": new basic_1.IntegerType(),\r\n },\r\n optional: {\r\n \"off\": new basic_1.IntegerType(),\r\n },\r\n return: new basic_1.IntegerType(),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"CHARLEN\",\r\n mandatory: {\r\n \"val\": new basic_1.StringType(),\r\n },\r\n return: new basic_1.IntegerType(),\r\n },\r\n {\r\n name: \"CMAX\",\r\n mandatory: {\r\n \"val1\": new basic_1.StringType(),\r\n \"val2\": new basic_1.StringType(),\r\n },\r\n optional: {\r\n \"val3\": new basic_1.StringType(),\r\n \"val4\": new basic_1.StringType(),\r\n \"val5\": new basic_1.StringType(),\r\n \"val6\": new basic_1.StringType(),\r\n \"val7\": new basic_1.StringType(),\r\n \"val9\": new basic_1.StringType(),\r\n },\r\n return: new basic_1.StringType(),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"CMIN\",\r\n mandatory: {\r\n \"val1\": new basic_1.StringType(),\r\n \"val2\": new basic_1.StringType(),\r\n },\r\n optional: {\r\n \"val3\": new basic_1.StringType(),\r\n \"val4\": new basic_1.StringType(),\r\n \"val5\": new basic_1.StringType(),\r\n \"val6\": new basic_1.StringType(),\r\n \"val7\": new basic_1.StringType(),\r\n \"val9\": new basic_1.StringType(),\r\n },\r\n return: new basic_1.StringType(),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"CONCAT_LINES_OF\",\r\n mandatory: {\r\n \"table\": new basic_1.TableType(new basic_1.AnyType(), { withHeader: false }),\r\n },\r\n optional: {\r\n \"sep\": new basic_1.StringType(),\r\n },\r\n return: new basic_1.StringType(),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"CONDENSE\",\r\n mandatory: {\r\n \"val\": new basic_1.StringType(),\r\n },\r\n optional: {\r\n \"del\": new basic_1.StringType(),\r\n \"from\": new basic_1.StringType(),\r\n \"to\": new basic_1.StringType(),\r\n },\r\n return: new basic_1.StringType(),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"CONTAINS\",\r\n mandatory: {\r\n \"val\": new basic_1.StringType(),\r\n },\r\n optional: {\r\n \"sub\": new basic_1.StringType(),\r\n \"start\": new basic_1.StringType(),\r\n \"end\": new basic_1.StringType(),\r\n \"regex\": new basic_1.StringType(),\r\n \"pcre\": new basic_1.StringType(),\r\n \"case\": new basic_1.CharacterType(1),\r\n \"off\": new basic_1.IntegerType(),\r\n \"len\": new basic_1.IntegerType(),\r\n \"occ\": new basic_1.IntegerType(),\r\n },\r\n return: new basic_1.CharacterType(1),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"CONTAINS_ANY_NOT_OF\",\r\n mandatory: {\r\n \"val\": new basic_1.StringType(),\r\n },\r\n optional: {\r\n \"sub\": new basic_1.StringType(),\r\n \"start\": new basic_1.StringType(),\r\n \"end\": new basic_1.StringType(),\r\n \"off\": new basic_1.IntegerType(),\r\n \"len\": new basic_1.IntegerType(),\r\n \"occ\": new basic_1.IntegerType(),\r\n },\r\n return: new basic_1.CharacterType(1), version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"CONTAINS_ANY_OF\",\r\n mandatory: {\r\n \"val\": new basic_1.StringType(),\r\n },\r\n optional: {\r\n \"sub\": new basic_1.StringType(),\r\n \"start\": new basic_1.StringType(),\r\n \"end\": new basic_1.StringType(),\r\n \"off\": new basic_1.IntegerType(),\r\n \"len\": new basic_1.IntegerType(),\r\n \"occ\": new basic_1.IntegerType(),\r\n },\r\n return: new basic_1.CharacterType(1),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"COS\",\r\n mandatory: {\r\n \"val\": new basic_1.FloatType(),\r\n },\r\n return: new basic_1.FloatType(),\r\n },\r\n {\r\n name: \"COSH\",\r\n mandatory: {\r\n \"val\": new basic_1.FloatType(),\r\n },\r\n return: new basic_1.FloatType(),\r\n },\r\n {\r\n name: \"COUNT\",\r\n mandatory: {\r\n \"val\": new basic_1.StringType(),\r\n },\r\n optional: {\r\n \"sub\": new basic_1.StringType(),\r\n \"regex\": new basic_1.StringType(),\r\n \"pcre\": new basic_1.StringType(),\r\n \"case\": new basic_1.CharacterType(1),\r\n \"off\": new basic_1.IntegerType(),\r\n \"len\": new basic_1.IntegerType(),\r\n },\r\n return: new basic_1.StringType(),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"COUNT_ANY_NOT_OF\",\r\n mandatory: {\r\n \"val\": new basic_1.StringType(),\r\n },\r\n optional: {\r\n \"sub\": new basic_1.StringType(),\r\n \"regex\": new basic_1.StringType(),\r\n \"pcre\": new basic_1.StringType(),\r\n \"case\": new basic_1.CharacterType(1),\r\n \"off\": new basic_1.IntegerType(),\r\n \"len\": new basic_1.IntegerType(),\r\n },\r\n return: new basic_1.StringType(),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"COUNT_ANY_OF\",\r\n mandatory: {\r\n \"val\": new basic_1.StringType(),\r\n },\r\n optional: {\r\n \"sub\": new basic_1.StringType(),\r\n \"regex\": new basic_1.StringType(),\r\n \"pcre\": new basic_1.StringType(),\r\n \"case\": new basic_1.CharacterType(1),\r\n \"off\": new basic_1.IntegerType(),\r\n \"len\": new basic_1.IntegerType(),\r\n },\r\n return: new basic_1.StringType(),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"DBMAXLEN\",\r\n mandatory: {\r\n \"val\": new basic_1.StringType(),\r\n },\r\n return: new basic_1.IntegerType(),\r\n },\r\n {\r\n name: \"DISTANCE\",\r\n mandatory: {\r\n \"val1\": new basic_1.StringType(),\r\n \"val2\": new basic_1.StringType(),\r\n },\r\n return: new basic_1.IntegerType(),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"ESCAPE\",\r\n mandatory: {\r\n \"val\": new basic_1.StringType(),\r\n \"format\": new basic_1.StringType(),\r\n },\r\n return: new basic_1.StringType(),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"EXP\",\r\n mandatory: {\r\n \"val\": new basic_1.FloatType(),\r\n },\r\n return: new basic_1.FloatType(),\r\n },\r\n {\r\n name: \"FIND\",\r\n mandatory: {\r\n \"val\": new basic_1.StringType(),\r\n },\r\n optional: {\r\n \"sub\": new basic_1.StringType(),\r\n \"regex\": new basic_1.StringType(),\r\n \"pcre\": new basic_1.StringType(),\r\n \"case\": new basic_1.CharacterType(1),\r\n \"off\": new basic_1.IntegerType(),\r\n \"len\": new basic_1.IntegerType(),\r\n \"occ\": new basic_1.IntegerType(),\r\n },\r\n return: new basic_1.IntegerType(),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"FIND_ANY_NOT_OF\",\r\n mandatory: {\r\n \"val\": new basic_1.StringType(),\r\n },\r\n optional: {\r\n \"sub\": new basic_1.StringType(),\r\n \"off\": new basic_1.IntegerType(),\r\n \"len\": new basic_1.IntegerType(),\r\n \"occ\": new basic_1.IntegerType(),\r\n },\r\n return: new basic_1.IntegerType(),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"FIND_ANY_OF\",\r\n mandatory: {\r\n \"val\": new basic_1.StringType(),\r\n },\r\n optional: {\r\n \"sub\": new basic_1.StringType(),\r\n \"off\": new basic_1.IntegerType(),\r\n \"len\": new basic_1.IntegerType(),\r\n \"occ\": new basic_1.IntegerType(),\r\n },\r\n return: new basic_1.IntegerType(),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"FIND_END\",\r\n mandatory: {\r\n \"val\": new basic_1.StringType(),\r\n },\r\n optional: {\r\n \"sub\": new basic_1.StringType(),\r\n \"regex\": new basic_1.StringType(),\r\n \"pcre\": new basic_1.StringType(),\r\n \"case\": new basic_1.CharacterType(1),\r\n \"off\": new basic_1.IntegerType(),\r\n \"len\": new basic_1.IntegerType(),\r\n \"occ\": new basic_1.IntegerType(),\r\n },\r\n return: new basic_1.IntegerType(),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"FLOOR\",\r\n mandatory: {\r\n \"val\": new basic_1.FloatType(),\r\n },\r\n return: new basic_1.IntegerType(),\r\n },\r\n {\r\n name: \"FRAC\",\r\n mandatory: {\r\n \"val\": new basic_1.FloatType(),\r\n },\r\n return: new basic_1.IntegerType(),\r\n },\r\n {\r\n name: \"FROM_MIXED\",\r\n mandatory: { \"val\": new basic_1.StringType() },\r\n optional: {\r\n \"case\": new basic_1.CharacterType(1),\r\n \"sep\": new basic_1.IntegerType(),\r\n \"min\": new basic_1.IntegerType(),\r\n },\r\n return: new basic_1.StringType(),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"INSERT\",\r\n mandatory: {\r\n \"val\": new basic_1.StringType(),\r\n \"sub\": new basic_1.StringType(),\r\n },\r\n optional: {\r\n \"off\": new basic_1.IntegerType(),\r\n },\r\n return: new basic_1.StringType(),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"IPOW\",\r\n mandatory: {\r\n \"base\": new basic_1.FloatType(),\r\n \"exp\": new basic_1.FloatType(),\r\n },\r\n return: new basic_1.IntegerType(),\r\n version: version_1.Version.v740sp02,\r\n },\r\n {\r\n name: \"LINE_EXISTS\",\r\n mandatory: {\r\n \"val\": new basic_1.TableType(new basic_1.AnyType(), { withHeader: false }),\r\n },\r\n return: new basic_1.CharacterType(1),\r\n version: version_1.Version.v740sp02,\r\n },\r\n {\r\n name: \"LINE_INDEX\",\r\n mandatory: {\r\n \"val\": new basic_1.StringType(),\r\n },\r\n return: new basic_1.IntegerType(),\r\n version: version_1.Version.v740sp02,\r\n },\r\n {\r\n name: \"LINES\",\r\n mandatory: {\r\n \"val\": new basic_1.TableType(new basic_1.AnyType(), { withHeader: false }),\r\n },\r\n return: new basic_1.IntegerType(),\r\n },\r\n {\r\n name: \"LOG\",\r\n mandatory: {\r\n \"val\": new basic_1.FloatType(),\r\n },\r\n return: new basic_1.FloatType(),\r\n },\r\n {\r\n name: \"LOG10\",\r\n mandatory: {\r\n \"val\": new basic_1.FloatType(),\r\n },\r\n return: new basic_1.FloatType(),\r\n },\r\n {\r\n name: \"MATCH\",\r\n mandatory: {\r\n \"val\": new basic_1.StringType(),\r\n }, optional: {\r\n \"case\": new basic_1.CharacterType(1),\r\n \"regex\": new basic_1.StringType(),\r\n \"pcre\": new basic_1.StringType(),\r\n \"occ\": new basic_1.IntegerType(),\r\n },\r\n return: new basic_1.StringType(),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"MATCHES\",\r\n mandatory: {\r\n \"val\": new basic_1.StringType(),\r\n },\r\n optional: {\r\n \"case\": new basic_1.CharacterType(1),\r\n \"regex\": new basic_1.StringType(),\r\n \"pcre\": new basic_1.StringType(),\r\n \"off\": new basic_1.IntegerType(),\r\n \"len\": new basic_1.IntegerType(),\r\n },\r\n return: new basic_1.CharacterType(1),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"NMAX\",\r\n mandatory: {\r\n \"val1\": new basic_1.StringType(),\r\n \"val2\": new basic_1.StringType(),\r\n },\r\n optional: {\r\n \"val3\": new basic_1.StringType(),\r\n \"val4\": new basic_1.StringType(),\r\n \"val5\": new basic_1.StringType(),\r\n \"val6\": new basic_1.StringType(),\r\n \"val7\": new basic_1.StringType(),\r\n \"val8\": new basic_1.StringType(),\r\n \"val9\": new basic_1.StringType(),\r\n },\r\n return: new basic_1.IntegerType(),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"NMIN\",\r\n mandatory: {\r\n \"val1\": new basic_1.StringType(),\r\n \"val2\": new basic_1.StringType(),\r\n },\r\n optional: {\r\n \"val3\": new basic_1.StringType(),\r\n \"val4\": new basic_1.StringType(),\r\n \"val5\": new basic_1.StringType(),\r\n \"val6\": new basic_1.StringType(),\r\n \"val7\": new basic_1.StringType(),\r\n \"val8\": new basic_1.StringType(),\r\n \"val9\": new basic_1.StringType(),\r\n },\r\n return: new basic_1.IntegerType(),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"NUMOFCHAR\",\r\n mandatory: {\r\n \"val\": new basic_1.StringType(),\r\n },\r\n return: new basic_1.IntegerType(),\r\n },\r\n {\r\n name: \"REPEAT\",\r\n mandatory: {\r\n \"val\": new basic_1.StringType(),\r\n \"occ\": new basic_1.IntegerType(),\r\n },\r\n return: new basic_1.StringType(),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"REPLACE\",\r\n mandatory: {\r\n \"val\": new basic_1.StringType(),\r\n \"with\": new basic_1.StringType(),\r\n },\r\n optional: {\r\n \"sub\": new basic_1.StringType(),\r\n \"regex\": new basic_1.StringType(),\r\n \"pcre\": new basic_1.StringType(),\r\n \"case\": new basic_1.CharacterType(1),\r\n \"off\": new basic_1.IntegerType(),\r\n \"len\": new basic_1.IntegerType(),\r\n \"occ\": new basic_1.IntegerType(),\r\n },\r\n return: new basic_1.StringType(),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"RESCALE\",\r\n mandatory: {\r\n \"val\": new basic_1.FloatType(),\r\n },\r\n optional: {\r\n \"dec\": new basic_1.IntegerType(),\r\n \"prec\": new basic_1.IntegerType(),\r\n \"mode\": new basic_1.IntegerType(),\r\n },\r\n return: new basic_1.FloatType(),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"REVERSE\",\r\n mandatory: {\r\n \"val\": new basic_1.StringType(),\r\n },\r\n return: new basic_1.StringType(),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"ROUND\",\r\n mandatory: {\r\n \"val\": new basic_1.FloatType(),\r\n },\r\n optional: {\r\n \"dec\": new basic_1.IntegerType(),\r\n \"prec\": new basic_1.IntegerType(),\r\n \"mode\": new basic_1.IntegerType(),\r\n },\r\n return: new basic_1.IntegerType(),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"SEGMENT\",\r\n mandatory: {\r\n \"val\": new basic_1.StringType(),\r\n \"index\": new basic_1.IntegerType(),\r\n },\r\n optional: {\r\n \"sep\": new basic_1.StringType(),\r\n \"space\": new basic_1.StringType(),\r\n },\r\n return: new basic_1.StringType(),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"SHIFT_LEFT\",\r\n mandatory: {\r\n \"val\": new basic_1.StringType(),\r\n },\r\n optional: {\r\n \"sub\": new basic_1.StringType(),\r\n \"places\": new basic_1.IntegerType(),\r\n \"circular\": new basic_1.IntegerType(),\r\n },\r\n return: new basic_1.StringType(),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"SHIFT_RIGHT\",\r\n mandatory: {\r\n \"val\": new basic_1.StringType(),\r\n },\r\n optional: {\r\n \"sub\": new basic_1.StringType(),\r\n \"places\": new basic_1.IntegerType(),\r\n \"circular\": new basic_1.IntegerType(),\r\n },\r\n return: new basic_1.StringType(),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"SIGN\",\r\n mandatory: {\r\n \"val\": new basic_1.FloatType(),\r\n },\r\n return: new basic_1.IntegerType(),\r\n },\r\n {\r\n name: \"SIN\",\r\n mandatory: {\r\n \"val\": new basic_1.FloatType(),\r\n },\r\n return: new basic_1.FloatType(),\r\n },\r\n {\r\n name: \"SINH\",\r\n mandatory: {\r\n \"val\": new basic_1.FloatType(),\r\n },\r\n return: new basic_1.FloatType(),\r\n },\r\n {\r\n name: \"SQRT\",\r\n mandatory: {\r\n \"val\": new basic_1.FloatType(),\r\n },\r\n return: new basic_1.FloatType(),\r\n },\r\n {\r\n name: \"STRLEN\",\r\n mandatory: {\r\n \"val\": new basic_1.StringType(),\r\n },\r\n return: new basic_1.IntegerType(),\r\n },\r\n {\r\n name: \"SUBSTRING\",\r\n mandatory: {\r\n \"val\": new basic_1.StringType(),\r\n },\r\n optional: {\r\n \"off\": new basic_1.IntegerType(),\r\n \"len\": new basic_1.IntegerType(),\r\n },\r\n return: new basic_1.StringType(),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"SUBSTRING_AFTER\",\r\n mandatory: {\r\n \"val\": new basic_1.StringType(),\r\n },\r\n optional: {\r\n \"sub\": new basic_1.StringType(),\r\n \"regex\": new basic_1.StringType(),\r\n \"pcre\": new basic_1.StringType(),\r\n \"case\": new basic_1.CharacterType(1),\r\n \"len\": new basic_1.IntegerType(),\r\n \"occ\": new basic_1.IntegerType(),\r\n },\r\n return: new basic_1.StringType(),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"SUBSTRING_BEFORE\",\r\n mandatory: {\r\n \"val\": new basic_1.StringType(),\r\n },\r\n optional: {\r\n \"sub\": new basic_1.StringType(),\r\n \"regex\": new basic_1.StringType(),\r\n \"pcre\": new basic_1.StringType(),\r\n \"case\": new basic_1.CharacterType(1),\r\n \"len\": new basic_1.IntegerType(),\r\n \"occ\": new basic_1.IntegerType(),\r\n },\r\n return: new basic_1.StringType(),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"SUBSTRING_FROM\",\r\n mandatory: {\r\n \"val\": new basic_1.StringType(),\r\n },\r\n optional: {\r\n \"sub\": new basic_1.StringType(),\r\n \"regex\": new basic_1.StringType(),\r\n \"pcre\": new basic_1.StringType(),\r\n \"case\": new basic_1.CharacterType(1),\r\n \"len\": new basic_1.IntegerType(),\r\n \"occ\": new basic_1.IntegerType(),\r\n },\r\n return: new basic_1.StringType(),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"SUBSTRING_TO\",\r\n mandatory: {\r\n \"val\": new basic_1.StringType(),\r\n },\r\n optional: {\r\n \"sub\": new basic_1.StringType(),\r\n \"regex\": new basic_1.StringType(),\r\n \"pcre\": new basic_1.StringType(),\r\n \"case\": new basic_1.CharacterType(1),\r\n \"len\": new basic_1.IntegerType(),\r\n \"occ\": new basic_1.IntegerType(),\r\n },\r\n return: new basic_1.StringType(),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"TAN\",\r\n mandatory: {\r\n \"val\": new basic_1.FloatType(),\r\n },\r\n return: new basic_1.FloatType(),\r\n },\r\n {\r\n name: \"TANH\",\r\n mandatory: {\r\n \"val\": new basic_1.FloatType(),\r\n },\r\n return: new basic_1.FloatType(),\r\n },\r\n {\r\n name: \"TO_LOWER\",\r\n mandatory: {\r\n \"val\": new basic_1.StringType(),\r\n },\r\n return: new basic_1.StringType(),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"TO_MIXED\",\r\n mandatory: {\r\n \"val\": new basic_1.StringType(),\r\n },\r\n optional: {\r\n \"case\": new basic_1.CharacterType(1),\r\n \"sep\": new basic_1.IntegerType(),\r\n \"min\": new basic_1.IntegerType(),\r\n },\r\n return: new basic_1.StringType(),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"TO_UPPER\",\r\n mandatory: { \"val\": new basic_1.StringType() },\r\n return: new basic_1.StringType(),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"TRANSLATE\",\r\n mandatory: {\r\n \"val\": new basic_1.StringType(),\r\n \"from\": new basic_1.StringType(),\r\n \"to\": new basic_1.StringType(),\r\n },\r\n return: new basic_1.StringType(),\r\n version: version_1.Version.v702,\r\n },\r\n {\r\n name: \"TRUNC\",\r\n mandatory: {\r\n \"val\": new basic_1.FloatType(),\r\n },\r\n return: new basic_1.IntegerType(),\r\n },\r\n {\r\n name: \"UTCLONG_ADD\",\r\n mandatory: {\r\n \"val\": new basic_1.UTCLongType(),\r\n },\r\n optional: {\r\n \"days\": new basic_1.IntegerType(),\r\n \"hour\": new basic_1.IntegerType(),\r\n \"minutes\": new basic_1.IntegerType(),\r\n \"seconds\": new basic_1.FloatType(),\r\n },\r\n return: new basic_1.UTCLongType(),\r\n version: version_1.Version.v754,\r\n },\r\n {\r\n name: \"UTCLONG_CURRENT\",\r\n return: new basic_1.UTCLongType(),\r\n version: version_1.Version.v754,\r\n },\r\n {\r\n name: \"UTCLONG_DIFF\",\r\n mandatory: {\r\n \"high\": new basic_1.UTCLongType(),\r\n \"low\": new basic_1.UTCLongType(),\r\n },\r\n return: new basic_1.FloatType(),\r\n version: version_1.Version.v754,\r\n },\r\n {\r\n name: \"XSDBOOL\",\r\n mandatory: {\r\n \"val\": new basic_1.StringType(),\r\n },\r\n return: new basic_1.CharacterType(1),\r\n version: version_1.Version.v740sp08,\r\n },\r\n {\r\n name: \"XSTRLEN\",\r\n mandatory: {\r\n \"val\": new basic_1.XStringType(),\r\n },\r\n return: new basic_1.IntegerType(),\r\n },\r\n];\r\n//# sourceMappingURL=_builtin.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/abap/5_syntax/_builtin.js?");
|
|
6378
6378
|
|
|
6379
6379
|
/***/ }),
|
|
6380
6380
|
|
|
@@ -6396,7 +6396,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
|
|
|
6396
6396
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
6397
6397
|
|
|
6398
6398
|
"use strict";
|
|
6399
|
-
eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ObjectOriented = void 0;\r\nconst Statements = __webpack_require__(/*! ../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\r\nconst Expressions = __webpack_require__(/*! ../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\r\nconst visibility_1 = __webpack_require__(/*! ../4_file_information/visibility */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/visibility.js\");\r\n// todo, think some of the public methods can be made private\r\nclass ObjectOriented {\r\n constructor(scope) {\r\n this.scope = scope;\r\n }\r\n // returns list of interfaces implemented\r\n fromInterfaces(classDefinition, skip) {\r\n const ignore = [];\r\n for (const i of classDefinition.getImplementing()) {\r\n ignore.push(...this.fromInterfaceByName(i.name, ignore.concat(skip || [])));\r\n }\r\n return ignore;\r\n }\r\n fromInterfaceByName(name, ignore) {\r\n const idef = this.scope.findInterfaceDefinition(name);\r\n if (idef === undefined || ignore.includes(name.toUpperCase())) {\r\n return [];\r\n }\r\n const ret = [name.toUpperCase()];\r\n for (const t of idef.getTypeDefinitions().getAll()) {\r\n const n = name + \"~\" + t.type.getName();\r\n this.scope.addTypeNamed(n, t.type);\r\n }\r\n this.scope.addListPrefix(idef.getAttributes().getConstants(), name + \"~\");\r\n this.scope.addListPrefix(idef.getAttributes().getStatic(), name + \"~\");\r\n this.scope.addListPrefix(idef.getAttributes().getInstance(), name + \"~\");\r\n for (const i of idef.getImplementing()) {\r\n if (ignore.includes(i.name.toUpperCase())) {\r\n continue;\r\n }\r\n ret.push(...this.fromInterfaceByName(i.name, ignore));\r\n ignore.push(i.name.toUpperCase());\r\n ret.push(i.name.toUpperCase());\r\n }\r\n return ret;\r\n }\r\n addAliasedAttributes(classDefinition) {\r\n for (const alias of classDefinition.getAliases().getAll()) {\r\n const comp = alias.getComponent();\r\n const idef = this.scope.findInterfaceDefinition(comp.split(\"~\")[0]);\r\n if (idef) {\r\n const found = idef.getAttributes().findByName(comp.split(\"~\")[1]);\r\n if (found) {\r\n this.scope.addNamedIdentifier(alias.getName(), found);\r\n }\r\n }\r\n }\r\n }\r\n findMethodInInterface(interfaceName, methodName) {\r\n const idef = this.scope.findInterfaceDefinition(interfaceName);\r\n if (idef) {\r\n const methods = idef.getMethodDefinitions().getAll();\r\n for (const method of methods) {\r\n if (method.getName().toUpperCase() === methodName.toUpperCase()) {\r\n return { method, def: idef };\r\n }\r\n }\r\n return this.findMethodViaAlias(methodName, idef);\r\n }\r\n return undefined;\r\n }\r\n findMethodViaAlias(methodName, def) {\r\n for (const a of def.getAliases().getAll()) {\r\n if (a.getName().toUpperCase() === methodName.toUpperCase()) {\r\n const comp = a.getComponent();\r\n const res = this.findMethodInInterface(comp.split(\"~\")[0], comp.split(\"~\")[1]);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n }\r\n return undefined;\r\n }\r\n findClassName(node) {\r\n if (!(node.get() instanceof Statements.ClassImplementation\r\n || node.get() instanceof Statements.ClassDefinition)) {\r\n throw new Error(\"findClassName, unexpected node type\");\r\n }\r\n const className = node.findFirstExpression(Expressions.ClassName);\r\n if (className === undefined) {\r\n throw new Error(\"findClassName, unexpected node type\");\r\n }\r\n return className.getFirstToken().getStr();\r\n }\r\n findInterfaces(cd) {\r\n var _a;\r\n const ret = [...cd.getImplementing()];\r\n for (const r of ret) {\r\n const nested = (_a = this.scope.findInterfaceDefinition(r.name)) === null || _a === void 0 ? void 0 : _a.getImplementing();\r\n if (nested) {\r\n ret.push(...nested);\r\n }\r\n }\r\n const sup = cd.getSuperClass();\r\n if (sup) {\r\n try {\r\n ret.push(...this.findInterfaces(this.findSuperDefinition(sup)));\r\n }\r\n catch (_b) {\r\n // ignore errors, they will show up as variable not found anyhow\r\n }\r\n }\r\n return ret;\r\n }\r\n searchEvent(def, name) {\r\n var _a;\r\n if (def === undefined || name === undefined) {\r\n return undefined;\r\n }\r\n const found = def.getEvents().find(e => e.getName().toUpperCase() === (name === null || name === void 0 ? void 0 : name.toUpperCase()));\r\n if (found) {\r\n return found;\r\n }\r\n for (const a of ((_a = def.getAliases()) === null || _a === void 0 ? void 0 : _a.getAll()) || []) {\r\n if (a.getName().toUpperCase() === name.toUpperCase()) {\r\n const comp = a.getComponent();\r\n const res = this.searchEvent(this.scope.findObjectDefinition(comp.split(\"~\")[0]), comp.split(\"~\")[1]);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n }\r\n const sup = def.getSuperClass();\r\n if (sup) {\r\n return this.searchEvent(this.findSuperDefinition(sup), name);\r\n }\r\n return undefined;\r\n }\r\n // search in via super class, interfaces and aliases\r\n searchAttributeName(def, name) {\r\n var _a;\r\n if (def === undefined || name === undefined) {\r\n return undefined;\r\n }\r\n const upper = name.toUpperCase();\r\n for (const a of def.getAttributes().getAll()) {\r\n if (a.getName().toUpperCase() === upper) {\r\n return a;\r\n }\r\n }\r\n for (const a of ((_a = def.getAliases()) === null || _a === void 0 ? void 0 : _a.getAll()) || []) {\r\n if (a.getName().toUpperCase() === upper) {\r\n const comp = a.getComponent();\r\n const res = this.searchAttributeName(this.scope.findObjectDefinition(comp.split(\"~\")[0]), comp.split(\"~\")[1]);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n }\r\n if (name.includes(\"~\")) {\r\n const interfaceName = upper.split(\"~\")[0];\r\n if (def.getImplementing().some((a) => a.name.toUpperCase() === interfaceName)) {\r\n return this.searchAttributeName(this.scope.findInterfaceDefinition(interfaceName), name.split(\"~\")[1]);\r\n }\r\n }\r\n const sup = def.getSuperClass();\r\n if (sup) {\r\n return this.searchAttributeName(this.findSuperDefinition(sup), name);\r\n }\r\n return undefined;\r\n }\r\n // search in via super class, interfaces and aliases\r\n searchTypeName(def, name) {\r\n if (def === undefined || name === undefined) {\r\n return undefined;\r\n }\r\n const search = def.getTypeDefinitions().getByName(name);\r\n if (search) {\r\n return search;\r\n }\r\n if (name.includes(\"~\")) {\r\n const interfaceName = name.split(\"~\")[0];\r\n if (def.getImplementing().some((a) => a.name.toUpperCase() === interfaceName.toUpperCase())) {\r\n return this.searchTypeName(this.scope.findInterfaceDefinition(interfaceName), name.split(\"~\")[1]);\r\n }\r\n }\r\n const sup = def.getSuperClass();\r\n if (sup) {\r\n return this.searchTypeName(this.findSuperDefinition(sup), name);\r\n }\r\n return undefined;\r\n }\r\n // search in via super class, interfaces and aliases\r\n searchConstantName(def, name) {\r\n if (def === undefined || name === undefined) {\r\n return undefined;\r\n }\r\n for (const a of def.getAttributes().getConstants()) {\r\n if (a.getName().toUpperCase() === name.toUpperCase()) {\r\n return a;\r\n }\r\n }\r\n for (const a of def.getAliases().getAll()) {\r\n if (a.getName().toUpperCase() === name.toUpperCase()) {\r\n const comp = a.getComponent();\r\n const res = this.searchConstantName(this.scope.findObjectDefinition(comp.split(\"~\")[0]), comp.split(\"~\")[1]);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n }\r\n const sup = def.getSuperClass();\r\n if (sup) {\r\n return this.searchConstantName(this.findSuperDefinition(sup), name);\r\n }\r\n return undefined;\r\n }\r\n // search in via super class, interfaces and aliases\r\n searchMethodName(def, name) {\r\n if (def === undefined || name === undefined) {\r\n return { method: undefined, def: undefined };\r\n }\r\n const methodDefinition = this.findMethod(def, name);\r\n if (methodDefinition) {\r\n return { method: methodDefinition, def };\r\n }\r\n let interfaceName = undefined;\r\n if (name.includes(\"~\")) {\r\n interfaceName = name.split(\"~\")[0];\r\n if (interfaceName && this.findInterfaces(def).some(i => i.name.toUpperCase() === (interfaceName === null || interfaceName === void 0 ? void 0 : interfaceName.toUpperCase())) === false) {\r\n return { method: undefined, def: undefined };\r\n }\r\n }\r\n // todo, this is not completely correct? hmm, why? visibility?\r\n if (methodDefinition === undefined && interfaceName) {\r\n name = name.split(\"~\")[1];\r\n const found = this.findMethodInInterface(interfaceName, name);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n else if (methodDefinition === undefined) {\r\n const found = this.findMethodViaAlias(name, def);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n const sup = def.getSuperClass();\r\n if (methodDefinition === undefined && sup) {\r\n return this.searchMethodName(this.findSuperDefinition(sup), name);\r\n }\r\n return { method: undefined, def: undefined };\r\n }\r\n findMethod(def, methodName) {\r\n for (const method of def.getMethodDefinitions().getAll()) {\r\n if (method.getName().toUpperCase() === methodName.toUpperCase()) {\r\n if (method.isRedefinition()) {\r\n return this.findMethodInSuper(def, methodName);\r\n }\r\n else {\r\n return method;\r\n }\r\n }\r\n }\r\n return undefined;\r\n }\r\n findMethodInSuper(child, methodName) {\r\n let sup = child.getSuperClass();\r\n while (sup !== undefined) {\r\n const cdef = this.findSuperDefinition(sup);\r\n const found = this.findMethod(cdef, methodName);\r\n if (found) {\r\n return found;\r\n }\r\n sup = cdef.getSuperClass();\r\n }\r\n return undefined;\r\n }\r\n findSuperDefinition(name) {\r\n const csup = this.scope.findClassDefinition(name);\r\n if (csup === undefined) {\r\n throw new Error(\"Super class \\\"\" + name + \"\\\" not found or contains errors\");\r\n }\r\n return csup;\r\n }\r\n // returns list of interfaces implemented\r\n fromSuperClass(child) {\r\n let sup = child.getSuperClass();\r\n const ignore = [];\r\n while (sup !== undefined) {\r\n const cdef = this.findSuperDefinition(sup);\r\n for (const a of cdef.getAttributes().getAll()) {\r\n if (a.getVisibility() !== visibility_1.Visibility.Private) {\r\n this.scope.addIdentifier(a);\r\n // todo, handle scope and instance vs static\r\n }\r\n }\r\n for (const c of cdef.getAttributes().getConstants()) {\r\n if (c.getVisibility() !== visibility_1.Visibility.Private) {\r\n this.scope.addIdentifier(c);\r\n }\r\n }\r\n for (const t of cdef.getTypeDefinitions().getAll()) {\r\n if (t.visibility !== visibility_1.Visibility.Private) {\r\n this.scope.addType(t.type);\r\n }\r\n }\r\n ignore.push(...this.fromInterfaces(cdef, ignore));\r\n sup = cdef.getSuperClass();\r\n }\r\n return ignore;\r\n }\r\n}\r\nexports.ObjectOriented = ObjectOriented;\r\n//# sourceMappingURL=_object_oriented.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/abap/5_syntax/_object_oriented.js?");
|
|
6399
|
+
eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ObjectOriented = void 0;\r\nconst Statements = __webpack_require__(/*! ../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\r\nconst Expressions = __webpack_require__(/*! ../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\r\nconst visibility_1 = __webpack_require__(/*! ../4_file_information/visibility */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/visibility.js\");\r\n// todo, think some of the public methods can be made private\r\nclass ObjectOriented {\r\n constructor(scope) {\r\n this.scope = scope;\r\n }\r\n fromInterfaceByName(name, ignore) {\r\n const idef = this.scope.findInterfaceDefinition(name);\r\n if (idef === undefined || ignore.includes(name.toUpperCase())) {\r\n return [];\r\n }\r\n const ret = [name.toUpperCase()];\r\n for (const t of idef.getTypeDefinitions().getAll()) {\r\n const n = name + \"~\" + t.type.getName();\r\n this.scope.addTypeNamed(n, t.type);\r\n }\r\n this.scope.addListPrefix(idef.getAttributes().getConstants(), name + \"~\");\r\n this.scope.addListPrefix(idef.getAttributes().getStatic(), name + \"~\");\r\n this.scope.addListPrefix(idef.getAttributes().getInstance(), name + \"~\");\r\n for (const i of idef.getImplementing()) {\r\n if (ignore.includes(i.name.toUpperCase())) {\r\n continue;\r\n }\r\n ret.push(...this.fromInterfaceByName(i.name, ignore));\r\n ignore.push(i.name.toUpperCase());\r\n ret.push(i.name.toUpperCase());\r\n }\r\n return ret;\r\n }\r\n addAliasedAttributes(classDefinition) {\r\n for (const alias of classDefinition.getAliases().getAll()) {\r\n const comp = alias.getComponent();\r\n const idef = this.scope.findInterfaceDefinition(comp.split(\"~\")[0]);\r\n if (idef) {\r\n const found = idef.getAttributes().findByName(comp.split(\"~\")[1]);\r\n if (found) {\r\n this.scope.addNamedIdentifier(alias.getName(), found);\r\n }\r\n }\r\n }\r\n }\r\n findMethodInInterface(interfaceName, methodName) {\r\n const idef = this.scope.findInterfaceDefinition(interfaceName);\r\n if (idef) {\r\n const methods = idef.getMethodDefinitions().getAll();\r\n for (const method of methods) {\r\n if (method.getName().toUpperCase() === methodName.toUpperCase()) {\r\n return { method, def: idef };\r\n }\r\n }\r\n return this.findMethodViaAlias(methodName, idef);\r\n }\r\n return undefined;\r\n }\r\n findMethodViaAlias(methodName, def) {\r\n for (const a of def.getAliases().getAll()) {\r\n if (a.getName().toUpperCase() === methodName.toUpperCase()) {\r\n const comp = a.getComponent();\r\n const res = this.findMethodInInterface(comp.split(\"~\")[0], comp.split(\"~\")[1]);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n }\r\n return undefined;\r\n }\r\n findClassName(node) {\r\n if (!(node.get() instanceof Statements.ClassImplementation\r\n || node.get() instanceof Statements.ClassDefinition)) {\r\n throw new Error(\"findClassName, unexpected node type\");\r\n }\r\n const className = node.findFirstExpression(Expressions.ClassName);\r\n if (className === undefined) {\r\n throw new Error(\"findClassName, unexpected node type\");\r\n }\r\n return className.getFirstToken().getStr();\r\n }\r\n findInterfaces(cd) {\r\n var _a;\r\n const ret = [...cd.getImplementing()];\r\n for (const r of ret) {\r\n const nested = (_a = this.scope.findInterfaceDefinition(r.name)) === null || _a === void 0 ? void 0 : _a.getImplementing();\r\n if (nested) {\r\n ret.push(...nested);\r\n }\r\n }\r\n const sup = cd.getSuperClass();\r\n if (sup) {\r\n try {\r\n ret.push(...this.findInterfaces(this.findSuperDefinition(sup)));\r\n }\r\n catch (_b) {\r\n // ignore errors, they will show up as variable not found anyhow\r\n }\r\n }\r\n return ret;\r\n }\r\n searchEvent(def, name) {\r\n var _a;\r\n if (def === undefined || name === undefined) {\r\n return undefined;\r\n }\r\n const found = def.getEvents().find(e => e.getName().toUpperCase() === (name === null || name === void 0 ? void 0 : name.toUpperCase()));\r\n if (found) {\r\n return found;\r\n }\r\n for (const a of ((_a = def.getAliases()) === null || _a === void 0 ? void 0 : _a.getAll()) || []) {\r\n if (a.getName().toUpperCase() === name.toUpperCase()) {\r\n const comp = a.getComponent();\r\n const res = this.searchEvent(this.scope.findObjectDefinition(comp.split(\"~\")[0]), comp.split(\"~\")[1]);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n }\r\n const sup = def.getSuperClass();\r\n if (sup) {\r\n return this.searchEvent(this.findSuperDefinition(sup), name);\r\n }\r\n return undefined;\r\n }\r\n // search in via super class, interfaces and aliases\r\n searchAttributeName(def, name) {\r\n var _a;\r\n if (def === undefined || name === undefined) {\r\n return undefined;\r\n }\r\n const upper = name.toUpperCase();\r\n for (const a of def.getAttributes().getAll()) {\r\n if (a.getName().toUpperCase() === upper) {\r\n return a;\r\n }\r\n }\r\n for (const a of ((_a = def.getAliases()) === null || _a === void 0 ? void 0 : _a.getAll()) || []) {\r\n if (a.getName().toUpperCase() === upper) {\r\n const comp = a.getComponent();\r\n const res = this.searchAttributeName(this.scope.findObjectDefinition(comp.split(\"~\")[0]), comp.split(\"~\")[1]);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n }\r\n if (name.includes(\"~\")) {\r\n const interfaceName = upper.split(\"~\")[0];\r\n if (def.getImplementing().some((a) => a.name.toUpperCase() === interfaceName)) {\r\n return this.searchAttributeName(this.scope.findInterfaceDefinition(interfaceName), name.split(\"~\")[1]);\r\n }\r\n }\r\n const sup = def.getSuperClass();\r\n if (sup) {\r\n return this.searchAttributeName(this.findSuperDefinition(sup), name);\r\n }\r\n return undefined;\r\n }\r\n // search in via super class, interfaces and aliases\r\n searchTypeName(def, name) {\r\n if (def === undefined || name === undefined) {\r\n return undefined;\r\n }\r\n const search = def.getTypeDefinitions().getByName(name);\r\n if (search) {\r\n return search;\r\n }\r\n if (name.includes(\"~\")) {\r\n const interfaceName = name.split(\"~\")[0];\r\n if (def.getImplementing().some((a) => a.name.toUpperCase() === interfaceName.toUpperCase())) {\r\n return this.searchTypeName(this.scope.findInterfaceDefinition(interfaceName), name.split(\"~\")[1]);\r\n }\r\n }\r\n const sup = def.getSuperClass();\r\n if (sup) {\r\n return this.searchTypeName(this.findSuperDefinition(sup), name);\r\n }\r\n return undefined;\r\n }\r\n // search in via super class, interfaces and aliases\r\n searchConstantName(def, name) {\r\n if (def === undefined || name === undefined) {\r\n return undefined;\r\n }\r\n for (const a of def.getAttributes().getConstants()) {\r\n if (a.getName().toUpperCase() === name.toUpperCase()) {\r\n return a;\r\n }\r\n }\r\n for (const a of def.getAliases().getAll()) {\r\n if (a.getName().toUpperCase() === name.toUpperCase()) {\r\n const comp = a.getComponent();\r\n const res = this.searchConstantName(this.scope.findObjectDefinition(comp.split(\"~\")[0]), comp.split(\"~\")[1]);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n }\r\n const sup = def.getSuperClass();\r\n if (sup) {\r\n return this.searchConstantName(this.findSuperDefinition(sup), name);\r\n }\r\n return undefined;\r\n }\r\n // search in via super class, interfaces and aliases\r\n searchMethodName(def, name) {\r\n if (def === undefined || name === undefined) {\r\n return { method: undefined, def: undefined };\r\n }\r\n const methodDefinition = this.findMethod(def, name);\r\n if (methodDefinition) {\r\n return { method: methodDefinition, def };\r\n }\r\n let interfaceName = undefined;\r\n if (name.includes(\"~\")) {\r\n interfaceName = name.split(\"~\")[0];\r\n if (interfaceName && this.findInterfaces(def).some(i => i.name.toUpperCase() === (interfaceName === null || interfaceName === void 0 ? void 0 : interfaceName.toUpperCase())) === false) {\r\n return { method: undefined, def: undefined };\r\n }\r\n }\r\n // todo, this is not completely correct? hmm, why? visibility?\r\n if (methodDefinition === undefined && interfaceName) {\r\n name = name.split(\"~\")[1];\r\n const found = this.findMethodInInterface(interfaceName, name);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n else if (methodDefinition === undefined) {\r\n const found = this.findMethodViaAlias(name, def);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n const sup = def.getSuperClass();\r\n if (methodDefinition === undefined && sup) {\r\n return this.searchMethodName(this.findSuperDefinition(sup), name);\r\n }\r\n return { method: undefined, def: undefined };\r\n }\r\n findMethod(def, methodName) {\r\n for (const method of def.getMethodDefinitions().getAll()) {\r\n if (method.getName().toUpperCase() === methodName.toUpperCase()) {\r\n if (method.isRedefinition()) {\r\n return this.findMethodInSuper(def, methodName);\r\n }\r\n else {\r\n return method;\r\n }\r\n }\r\n }\r\n return undefined;\r\n }\r\n findMethodInSuper(child, methodName) {\r\n let sup = child.getSuperClass();\r\n while (sup !== undefined) {\r\n const cdef = this.findSuperDefinition(sup);\r\n const found = this.findMethod(cdef, methodName);\r\n if (found) {\r\n return found;\r\n }\r\n sup = cdef.getSuperClass();\r\n }\r\n return undefined;\r\n }\r\n findSuperDefinition(name) {\r\n const csup = this.scope.findClassDefinition(name);\r\n if (csup === undefined) {\r\n throw new Error(\"Super class \\\"\" + name + \"\\\" not found or contains errors\");\r\n }\r\n return csup;\r\n }\r\n fromSuperClassesAndInterfaces(child) {\r\n const implemented = this.fromSuperClasses(child);\r\n this.fromInterfaces(child, implemented);\r\n }\r\n // returns list of interfaces implemented\r\n fromSuperClasses(child) {\r\n let sup = child.getSuperClass();\r\n const ignore = [];\r\n while (sup !== undefined) {\r\n const cdef = this.findSuperDefinition(sup);\r\n for (const a of cdef.getAttributes().getAll()) {\r\n if (a.getVisibility() !== visibility_1.Visibility.Private) {\r\n this.scope.addIdentifier(a);\r\n // todo, handle scope and instance vs static\r\n }\r\n }\r\n for (const c of cdef.getAttributes().getConstants()) {\r\n if (c.getVisibility() !== visibility_1.Visibility.Private) {\r\n this.scope.addIdentifier(c);\r\n }\r\n }\r\n for (const t of cdef.getTypeDefinitions().getAll()) {\r\n if (t.visibility !== visibility_1.Visibility.Private) {\r\n this.scope.addType(t.type);\r\n }\r\n }\r\n ignore.push(...this.fromInterfaces(cdef, ignore));\r\n sup = cdef.getSuperClass();\r\n }\r\n return ignore;\r\n }\r\n // returns list of interfaces implemented\r\n fromInterfaces(classDefinition, skip) {\r\n const ignore = [];\r\n for (const i of classDefinition.getImplementing()) {\r\n ignore.push(...this.fromInterfaceByName(i.name, ignore.concat(skip || [])));\r\n }\r\n return ignore;\r\n }\r\n}\r\nexports.ObjectOriented = ObjectOriented;\r\n//# sourceMappingURL=_object_oriented.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/abap/5_syntax/_object_oriented.js?");
|
|
6400
6400
|
|
|
6401
6401
|
/***/ }),
|
|
6402
6402
|
|
|
@@ -6418,7 +6418,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
|
|
|
6418
6418
|
/***/ ((__unused_webpack_module, exports) => {
|
|
6419
6419
|
|
|
6420
6420
|
"use strict";
|
|
6421
|
-
eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ReferenceType = void 0;\r\nvar ReferenceType;\r\n(function (ReferenceType) {\r\n /** for classes and interface references */\r\n ReferenceType[\"ObjectOrientedReference\"] = \"
|
|
6421
|
+
eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ReferenceType = void 0;\r\nvar ReferenceType;\r\n(function (ReferenceType) {\r\n /** for classes and interface references */\r\n ReferenceType[\"ObjectOrientedReference\"] = \"Object\";\r\n ReferenceType[\"ObjectOrientedVoidReference\"] = \"Object (Void)\";\r\n ReferenceType[\"ObjectOrientedUnknownReference\"] = \"Object (Unknown)\";\r\n ReferenceType[\"TableReference\"] = \"Table\";\r\n ReferenceType[\"TableVoidReference\"] = \"Table (Void)\";\r\n ReferenceType[\"MethodReference\"] = \"Method\";\r\n ReferenceType[\"BuiltinMethodReference\"] = \"Builtin Method\";\r\n ReferenceType[\"MethodImplementationReference\"] = \"Method Implementation\";\r\n ReferenceType[\"TypeReference\"] = \"Type\";\r\n ReferenceType[\"BuiltinTypeReference\"] = \"Builtin Type\";\r\n ReferenceType[\"VoidType\"] = \"Type (Void)\";\r\n ReferenceType[\"InferredType\"] = \"Inferred Type\";\r\n ReferenceType[\"FormReference\"] = \"Form\";\r\n // FormVoidReference = \"Form (void)\",\r\n ReferenceType[\"DataReadReference\"] = \"Read From\";\r\n ReferenceType[\"DataWriteReference\"] = \"Write To\";\r\n})(ReferenceType = exports.ReferenceType || (exports.ReferenceType = {}));\r\n//# sourceMappingURL=_reference.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js?");
|
|
6422
6422
|
|
|
6423
6423
|
/***/ }),
|
|
6424
6424
|
|
|
@@ -7265,7 +7265,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
|
|
|
7265
7265
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
7266
7266
|
|
|
7267
7267
|
"use strict";
|
|
7268
|
-
eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ClassImplementation = void 0;\r\nconst _object_oriented_1 = __webpack_require__(/*! ../_object_oriented */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_object_oriented.js\");\r\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\r\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\r\nconst _typed_identifier_1 = __webpack_require__(/*! ../../types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\r\nconst position_1 = __webpack_require__(/*! ../../../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\r\nconst _builtin_1 = __webpack_require__(/*! ../_builtin */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_builtin.js\");\r\nconst _scope_type_1 = __webpack_require__(/*! ../_scope_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js\");\r\nclass ClassImplementation {\r\n runSyntax(node, scope, filename) {\r\n const helper = new _object_oriented_1.ObjectOriented(scope);\r\n const className = helper.findClassName(node);\r\n scope.push(_scope_type_1.ScopeType.ClassImplementation, className, node.getFirstToken().getStart(), filename);\r\n const classDefinition = scope.findClassDefinition(className);\r\n if (classDefinition === undefined) {\r\n throw new Error(\"Class definition for \\\"\" + className + \"\\\" not found\");\r\n }\r\n
|
|
7268
|
+
eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ClassImplementation = void 0;\r\nconst _object_oriented_1 = __webpack_require__(/*! ../_object_oriented */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_object_oriented.js\");\r\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\r\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\r\nconst _typed_identifier_1 = __webpack_require__(/*! ../../types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\r\nconst position_1 = __webpack_require__(/*! ../../../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\r\nconst _builtin_1 = __webpack_require__(/*! ../_builtin */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_builtin.js\");\r\nconst _scope_type_1 = __webpack_require__(/*! ../_scope_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js\");\r\nclass ClassImplementation {\r\n runSyntax(node, scope, filename) {\r\n const helper = new _object_oriented_1.ObjectOriented(scope);\r\n const className = helper.findClassName(node);\r\n scope.push(_scope_type_1.ScopeType.ClassImplementation, className, node.getFirstToken().getStart(), filename);\r\n const classDefinition = scope.findClassDefinition(className);\r\n if (classDefinition === undefined) {\r\n throw new Error(\"Class definition for \\\"\" + className + \"\\\" not found\");\r\n }\r\n for (const t of classDefinition.getTypeDefinitions().getAll()) {\r\n scope.addType(t.type);\r\n }\r\n const sup = scope.findClassDefinition(classDefinition.getSuperClass());\r\n if (sup) {\r\n scope.addIdentifier(new _typed_identifier_1.TypedIdentifier(new tokens_1.Identifier(new position_1.Position(1, 1), \"super\"), _builtin_1.BuiltIn.filename, new basic_1.ObjectReferenceType(sup)));\r\n }\r\n scope.addIdentifier(new _typed_identifier_1.TypedIdentifier(new tokens_1.Identifier(new position_1.Position(1, 1), \"me\"), _builtin_1.BuiltIn.filename, new basic_1.ObjectReferenceType(classDefinition)));\r\n helper.addAliasedAttributes(classDefinition); // todo, this is not correct, take care of instance vs static\r\n const classAttributes = classDefinition.getAttributes();\r\n scope.addList(classAttributes.getConstants());\r\n scope.addList(classAttributes.getStatic());\r\n for (const i of classAttributes.getInstance()) {\r\n scope.addExtraLikeType(i);\r\n }\r\n helper.fromSuperClassesAndInterfaces(classDefinition);\r\n }\r\n}\r\nexports.ClassImplementation = ClassImplementation;\r\n//# sourceMappingURL=class_implementation.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/class_implementation.js?");
|
|
7269
7269
|
|
|
7270
7270
|
/***/ }),
|
|
7271
7271
|
|
|
@@ -7771,7 +7771,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
|
|
|
7771
7771
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
7772
7772
|
|
|
7773
7773
|
"use strict";
|
|
7774
|
-
eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.MethodImplementation = void 0;\r\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\r\nconst _object_oriented_1 = __webpack_require__(/*! ../_object_oriented */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_object_oriented.js\");\r\nconst _scope_type_1 = __webpack_require__(/*! ../_scope_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js\");\r\nconst _reference_1 = __webpack_require__(/*! ../_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\r\nclass MethodImplementation {\r\n runSyntax(node, scope, filename) {\r\n const helper = new _object_oriented_1.ObjectOriented(scope);\r\n const className = scope.getName();\r\n const methodToken = node.findFirstExpression(Expressions.MethodName).getFirstToken();\r\n const methodName = methodToken === null || methodToken === void 0 ? void 0 : methodToken.getStr();\r\n const classDefinition = scope.findClassDefinition(className);\r\n if (classDefinition === undefined) {\r\n
|
|
7774
|
+
eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.MethodImplementation = void 0;\r\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\r\nconst _object_oriented_1 = __webpack_require__(/*! ../_object_oriented */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_object_oriented.js\");\r\nconst _scope_type_1 = __webpack_require__(/*! ../_scope_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js\");\r\nconst _reference_1 = __webpack_require__(/*! ../_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\r\nclass MethodImplementation {\r\n runSyntax(node, scope, filename) {\r\n const helper = new _object_oriented_1.ObjectOriented(scope);\r\n const className = scope.getName();\r\n const methodToken = node.findFirstExpression(Expressions.MethodName).getFirstToken();\r\n const methodName = methodToken === null || methodToken === void 0 ? void 0 : methodToken.getStr();\r\n const classDefinition = scope.findClassDefinition(className);\r\n if (classDefinition === undefined) {\r\n throw new Error(\"Class definition for \\\"\" + className + \"\\\" not found\");\r\n }\r\n const { method: methodDefinition } = helper.searchMethodName(classDefinition, methodName);\r\n if (methodDefinition === undefined) {\r\n throw new Error(\"Method definition \\\"\" + methodName + \"\\\" not found\");\r\n }\r\n if (methodDefinition.isStatic() === false) {\r\n scope.push(_scope_type_1.ScopeType.MethodInstance, methodName, node.getFirstToken().getStart(), filename);\r\n scope.addList(classDefinition.getAttributes().getInstance());\r\n }\r\n scope.push(_scope_type_1.ScopeType.Method, methodName, node.getFirstToken().getStart(), filename);\r\n scope.addReference(methodToken, methodDefinition, _reference_1.ReferenceType.MethodImplementationReference, filename);\r\n scope.addList(methodDefinition.getParameters().getAll());\r\n for (const i of helper.findInterfaces(classDefinition)) {\r\n if (methodName.toUpperCase().startsWith(i.name.toUpperCase() + \"~\") === false) {\r\n continue;\r\n }\r\n const idef = scope.findInterfaceDefinition(i.name);\r\n if (idef === undefined) {\r\n continue;\r\n }\r\n scope.addReference(methodToken, idef, _reference_1.ReferenceType.ObjectOrientedReference, filename);\r\n }\r\n }\r\n}\r\nexports.MethodImplementation = MethodImplementation;\r\n//# sourceMappingURL=method_implementation.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/method_implementation.js?");
|
|
7775
7775
|
|
|
7776
7776
|
/***/ }),
|
|
7777
7777
|
|
|
@@ -7925,7 +7925,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
|
|
|
7925
7925
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
7926
7926
|
|
|
7927
7927
|
"use strict";
|
|
7928
|
-
eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ReadTable = void 0;\r\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\r\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\r\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\r\nconst inline_data_1 = __webpack_require__(/*! ../expressions/inline_data */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_data.js\");\r\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\r\nconst fstarget_1 = __webpack_require__(/*! ../expressions/fstarget */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/fstarget.js\");\r\nconst component_compare_simple_1 = __webpack_require__(/*! ../expressions/component_compare_simple */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/component_compare_simple.js\");\r\nconst _type_utils_1 = __webpack_require__(/*! ../_type_utils */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_type_utils.js\");\r\nclass ReadTable {\r\n runSyntax(node, scope, filename) {\r\n const sources = node.findDirectExpressions(Expressions.Source);\r\n let firstSource = node.findDirectExpression(Expressions.SimpleSource2);\r\n if (firstSource === undefined) {\r\n firstSource = sources[0];\r\n }\r\n const sourceType = firstSource ? new source_1.Source().runSyntax(firstSource, scope, filename) : undefined;\r\n if (sourceType === undefined) {\r\n throw new Error(\"No source type determined, read table\");\r\n }\r\n else if (!(sourceType instanceof basic_1.TableType) && !(sourceType instanceof basic_1.VoidType)) {\r\n throw new Error(\"Read table, not a table type\");\r\n }\r\n let rowType = sourceType;\r\n if (rowType instanceof basic_1.TableType) {\r\n rowType = rowType.getRowType();\r\n }\r\n const components = node.findDirectExpression(Expressions.ComponentCompareSimple);\r\n if (components !== undefined) {\r\n new component_compare_simple_1.ComponentCompareSimple().runSyntax(components, scope, filename, rowType);\r\n }\r\n const indexSource = node.findExpressionAfterToken(\"INDEX\");\r\n if (indexSource) {\r\n const indexType = new source_1.Source().runSyntax(indexSource, scope, filename);\r\n if (_type_utils_1.TypeUtils.isAssignable(indexType, new basic_1.IntegerType()) === false) {\r\n throw new Error(\"READ TABLE, INDEX must be simple\");\r\n }\r\n }\r\n const fromSource = node.findExpressionAfterToken(\"FROM\");\r\n if (fromSource) {\r\n const fromType = new source_1.Source().runSyntax(fromSource, scope, filename);\r\n if (_type_utils_1.TypeUtils.isAssignable(fromType, new basic_1.IntegerType()) === false) {\r\n throw new Error(\"READ TABLE, FROM must be simple\");\r\n }\r\n }\r\n for (const s of sources) {\r\n if (s === firstSource || s === indexSource || s === fromSource) {\r\n continue;\r\n }\r\n new source_1.Source().runSyntax(s, scope, filename);\r\n }\r\n const target = node.findDirectExpression(Expressions.ReadTableTarget);\r\n if (target) {\r\n const inline = target.findFirstExpression(Expressions.InlineData);\r\n if (inline) {\r\n new inline_data_1.InlineData().runSyntax(inline, scope, filename, rowType);\r\n return;\r\n }\r\n const fst = target.findDirectExpression(Expressions.FSTarget);\r\n if (fst) {\r\n new fstarget_1.FSTarget().runSyntax(fst, scope, filename, rowType);\r\n return;\r\n }\r\n /*\r\n const inlinefs = target.findFirstExpression(Expressions.InlineFS);\r\n if (inlinefs) {\r\n new InlineFS().runSyntax(inlinefs, scope, filename, sourceType);\r\n return;\r\n }\r\n */\r\n const t = target.findFirstExpression(Expressions.Target);\r\n if (t) {\r\n new target_1.Target().runSyntax(t, scope, filename);\r\n return;\r\n }\r\n }\r\n
|
|
7928
|
+
eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ReadTable = void 0;\r\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\r\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\r\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\r\nconst inline_data_1 = __webpack_require__(/*! ../expressions/inline_data */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_data.js\");\r\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\r\nconst fstarget_1 = __webpack_require__(/*! ../expressions/fstarget */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/fstarget.js\");\r\nconst component_compare_simple_1 = __webpack_require__(/*! ../expressions/component_compare_simple */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/component_compare_simple.js\");\r\nconst _type_utils_1 = __webpack_require__(/*! ../_type_utils */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_type_utils.js\");\r\nclass ReadTable {\r\n runSyntax(node, scope, filename) {\r\n const concat = node.concatTokens().toUpperCase();\r\n const sources = node.findDirectExpressions(Expressions.Source);\r\n let firstSource = node.findDirectExpression(Expressions.SimpleSource2);\r\n if (firstSource === undefined) {\r\n firstSource = sources[0];\r\n }\r\n const sourceType = firstSource ? new source_1.Source().runSyntax(firstSource, scope, filename) : undefined;\r\n if (sourceType === undefined) {\r\n throw new Error(\"No source type determined, read table\");\r\n }\r\n else if (!(sourceType instanceof basic_1.TableType) && !(sourceType instanceof basic_1.VoidType)) {\r\n throw new Error(\"Read table, not a table type\");\r\n }\r\n let rowType = sourceType;\r\n if (rowType instanceof basic_1.TableType) {\r\n rowType = rowType.getRowType();\r\n }\r\n const components = node.findDirectExpression(Expressions.ComponentCompareSimple);\r\n if (components !== undefined) {\r\n new component_compare_simple_1.ComponentCompareSimple().runSyntax(components, scope, filename, rowType);\r\n }\r\n const indexSource = node.findExpressionAfterToken(\"INDEX\");\r\n if (indexSource) {\r\n const indexType = new source_1.Source().runSyntax(indexSource, scope, filename);\r\n if (_type_utils_1.TypeUtils.isAssignable(indexType, new basic_1.IntegerType()) === false) {\r\n throw new Error(\"READ TABLE, INDEX must be simple\");\r\n }\r\n }\r\n const fromSource = node.findExpressionAfterToken(\"FROM\");\r\n if (fromSource) {\r\n const fromType = new source_1.Source().runSyntax(fromSource, scope, filename);\r\n if (_type_utils_1.TypeUtils.isAssignable(fromType, new basic_1.IntegerType()) === false) {\r\n throw new Error(\"READ TABLE, FROM must be simple\");\r\n }\r\n }\r\n for (const s of sources) {\r\n if (s === firstSource || s === indexSource || s === fromSource) {\r\n continue;\r\n }\r\n new source_1.Source().runSyntax(s, scope, filename);\r\n }\r\n const target = node.findDirectExpression(Expressions.ReadTableTarget);\r\n if (target) {\r\n if (concat.includes(\" REFERENCE INTO \")) {\r\n rowType = new basic_1.DataReference(rowType);\r\n }\r\n const inline = target.findFirstExpression(Expressions.InlineData);\r\n if (inline) {\r\n new inline_data_1.InlineData().runSyntax(inline, scope, filename, rowType);\r\n return;\r\n }\r\n const fst = target.findDirectExpression(Expressions.FSTarget);\r\n if (fst) {\r\n new fstarget_1.FSTarget().runSyntax(fst, scope, filename, rowType);\r\n return;\r\n }\r\n /*\r\n const inlinefs = target.findFirstExpression(Expressions.InlineFS);\r\n if (inlinefs) {\r\n new InlineFS().runSyntax(inlinefs, scope, filename, sourceType);\r\n return;\r\n }\r\n */\r\n const t = target.findFirstExpression(Expressions.Target);\r\n if (t) {\r\n new target_1.Target().runSyntax(t, scope, filename);\r\n return;\r\n }\r\n }\r\n if (target === undefined && concat.includes(\" TRANSPORTING NO FIELDS \") === false) {\r\n // if sourceType is void, assume its with header\r\n if (sourceType instanceof basic_1.TableType && sourceType.isWithHeader() === false) {\r\n throw new Error(\"READ TABLE, define INTO or TRANSPORTING NO FIELDS\");\r\n }\r\n }\r\n }\r\n}\r\nexports.ReadTable = ReadTable;\r\n//# sourceMappingURL=read_table.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/read_table.js?");
|
|
7929
7929
|
|
|
7930
7930
|
/***/ }),
|
|
7931
7931
|
|
|
@@ -8475,7 +8475,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
|
|
|
8475
8475
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
8476
8476
|
|
|
8477
8477
|
"use strict";
|
|
8478
|
-
eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ExpressionNode = void 0;\r\nconst token_node_1 = __webpack_require__(/*! ./token_node */ \"./node_modules/@abaplint/core/build/src/abap/nodes/token_node.js\");\r\nconst tokens_1 = __webpack_require__(/*! ../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\r\nconst _abstract_node_1 = __webpack_require__(/*! ./_abstract_node */ \"./node_modules/@abaplint/core/build/src/abap/nodes/_abstract_node.js\");\r\nclass ExpressionNode extends _abstract_node_1.AbstractNode {\r\n constructor(expression) {\r\n super();\r\n this.expression = expression;\r\n }\r\n get() {\r\n return this.expression;\r\n }\r\n countTokens() {\r\n let ret = 0;\r\n for (const c of this.getChildren()) {\r\n ret = ret + c.countTokens();\r\n }\r\n return ret;\r\n }\r\n getFirstToken() {\r\n for (const child of this.getChildren()) {\r\n return child.getFirstToken();\r\n }\r\n throw new Error(\"ExpressionNode, getFirstToken, no children\");\r\n }\r\n concatTokens() {\r\n let str = \"\";\r\n let prev;\r\n for (const token of this.getTokens()) {\r\n if (token instanceof tokens_1.Pragma) {\r\n continue;\r\n }\r\n if (str === \"\") {\r\n str = token.getStr();\r\n }\r\n else if (prev && prev.getStr().length + prev.getCol() === token.getCol()\r\n && prev.getRow() === token.getRow()) {\r\n str = str + token.getStr();\r\n }\r\n else {\r\n str = str + \" \" + token.getStr();\r\n }\r\n prev = token;\r\n }\r\n return str;\r\n }\r\n concatTokensWithoutStringsAndComments() {\r\n let str = \"\";\r\n let prev;\r\n for (const token of this.getTokens()) {\r\n if (token instanceof tokens_1.Comment\r\n || token instanceof tokens_1.String\r\n || token instanceof tokens_1.StringTemplate\r\n || token instanceof tokens_1.StringTemplateBegin\r\n || token instanceof tokens_1.StringTemplateMiddle\r\n || token instanceof tokens_1.StringTemplateEnd) {\r\n continue;\r\n }\r\n if (str === \"\") {\r\n str = token.getStr();\r\n }\r\n else if (prev && prev.getStr().length + prev.getCol() === token.getCol()\r\n && prev.getRow() === token.getRow()) {\r\n str = str + token.getStr();\r\n }\r\n else {\r\n str = str + \" \" + token.getStr();\r\n }\r\n prev = token;\r\n }\r\n return str;\r\n }\r\n getTokens() {\r\n const tokens = [];\r\n for (const c of this.getChildren()) {\r\n tokens.push(...this.toTokens(c));\r\n }\r\n return tokens;\r\n }\r\n toTokens(b) {\r\n const tokens = [];\r\n if (b instanceof token_node_1.TokenNode) {\r\n tokens.push(b.get());\r\n return tokens;\r\n }\r\n for (const c of b.getChildren()) {\r\n if (c instanceof token_node_1.TokenNode) {\r\n tokens.push(c.get());\r\n }\r\n else {\r\n tokens.push(...this.toTokens(c));\r\n }\r\n }\r\n return tokens;\r\n }\r\n getLastToken() {\r\n const child = this.getLastChild();\r\n if (child) {\r\n return child.getLastToken();\r\n }\r\n throw new Error(\"ExpressionNode, getLastToken, no children\");\r\n }\r\n getAllTokens() {\r\n const ret = [];\r\n for (const child of this.getChildren()) {\r\n if (child instanceof token_node_1.TokenNode) {\r\n ret.push(child.get());\r\n }\r\n else {\r\n ret.push(...child.getAllTokens());\r\n }\r\n }\r\n return ret;\r\n }\r\n getDirectTokens() {\r\n const ret = [];\r\n for (const child of this.getChildren()) {\r\n if (child instanceof token_node_1.TokenNode) {\r\n ret.push(child.get());\r\n }\r\n }\r\n return ret;\r\n }\r\n findDirectExpression(type) {\r\n for (const child of this.getChildren()) {\r\n if (child instanceof ExpressionNode && child.get() instanceof type) {\r\n return child;\r\n }\r\n }\r\n return undefined;\r\n }\r\n findExpressionAfterToken(text) {\r\n const children = this.getChildren();\r\n for (let i = 0; i < children.length - 1; i++) {\r\n const c = children[i];\r\n const next = children[i + 1];\r\n if (c instanceof token_node_1.TokenNode\r\n && c.get().getStr().toUpperCase() === text.toUpperCase()\r\n && next instanceof ExpressionNode) {\r\n return next;\r\n }\r\n }\r\n return undefined;\r\n }\r\n findDirectExpressions(type) {\r\n const ret = [];\r\n for (const child of this.getChildren()) {\r\n if (child instanceof ExpressionNode && child.get() instanceof type) {\r\n ret.push(child);\r\n }\r\n }\r\n return ret;\r\n }\r\n findDirectTokenByText(text) {\r\n for (const child of this.getChildren()) {\r\n if (child instanceof token_node_1.TokenNode && child.get().getStr().toUpperCase() === text.toUpperCase()) {\r\n return child.get();\r\n }\r\n }\r\n return undefined;\r\n }\r\n findAllExpressionsRecursive(type) {\r\n const ret = [];\r\n for (const child of this.getChildren()) {\r\n if (child instanceof token_node_1.TokenNode) {\r\n continue;\r\n }\r\n else if (child.get() instanceof type) {\r\n ret.push(child);\r\n }\r\n ret.push(...child.findAllExpressionsRecursive(type));\r\n }\r\n return ret;\r\n }\r\n findAllExpressions(type) {\r\n const ret = [];\r\n for (const child of this.getChildren()) {\r\n if (child instanceof token_node_1.TokenNode) {\r\n continue;\r\n }\r\n else if (child.get() instanceof type) {\r\n ret.push(child);\r\n }\r\n else {\r\n ret.push(...child.findAllExpressions(type));\r\n }\r\n }\r\n return ret;\r\n }\r\n findAllExpressionsMulti(type) {\r\n const ret = [];\r\n for (const child of this.getChildren()) {\r\n if (child instanceof token_node_1.TokenNode) {\r\n continue;\r\n }\r\n const before = ret.length;\r\n for (const t of type) {\r\n if (child.get() instanceof t) {\r\n ret.push(child);\r\n }\r\n }\r\n if (before === ret.length) {\r\n ret.push(...child.findAllExpressionsMulti(type));\r\n }\r\n }\r\n return ret;\r\n }\r\n findFirstExpression(type) {\r\n if (this.get() instanceof type) {\r\n return this;\r\n }\r\n for (const child of this.getChildren()) {\r\n if (child instanceof token_node_1.TokenNode) {\r\n continue;\r\n }\r\n else if (child.get() instanceof type) {\r\n return child;\r\n }\r\n else {\r\n const res = child.findFirstExpression(type);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n }\r\n return undefined;\r\n }\r\n}\r\nexports.ExpressionNode = ExpressionNode;\r\n//# sourceMappingURL=expression_node.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/abap/nodes/expression_node.js?");
|
|
8478
|
+
eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ExpressionNode = void 0;\r\nconst token_node_1 = __webpack_require__(/*! ./token_node */ \"./node_modules/@abaplint/core/build/src/abap/nodes/token_node.js\");\r\nconst tokens_1 = __webpack_require__(/*! ../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\r\nconst _abstract_node_1 = __webpack_require__(/*! ./_abstract_node */ \"./node_modules/@abaplint/core/build/src/abap/nodes/_abstract_node.js\");\r\nclass ExpressionNode extends _abstract_node_1.AbstractNode {\r\n constructor(expression) {\r\n super();\r\n this.expression = expression;\r\n }\r\n get() {\r\n return this.expression;\r\n }\r\n countTokens() {\r\n let ret = 0;\r\n for (const c of this.getChildren()) {\r\n ret = ret + c.countTokens();\r\n }\r\n return ret;\r\n }\r\n getFirstToken() {\r\n for (const child of this.getChildren()) {\r\n return child.getFirstToken();\r\n }\r\n throw new Error(\"ExpressionNode, getFirstToken, no children\");\r\n }\r\n concatTokens() {\r\n let str = \"\";\r\n let prev;\r\n for (const token of this.getTokens()) {\r\n if (token instanceof tokens_1.Pragma) {\r\n continue;\r\n }\r\n if (str === \"\") {\r\n str = token.getStr();\r\n }\r\n else if (prev && prev.getStr().length + prev.getCol() === token.getCol()\r\n && prev.getRow() === token.getRow()) {\r\n str = str + token.getStr();\r\n }\r\n else {\r\n str = str + \" \" + token.getStr();\r\n }\r\n prev = token;\r\n }\r\n return str;\r\n }\r\n concatTokensWithoutStringsAndComments() {\r\n let str = \"\";\r\n let prev;\r\n for (const token of this.getTokens()) {\r\n if (token instanceof tokens_1.Comment\r\n || token instanceof tokens_1.String\r\n || token instanceof tokens_1.StringTemplate\r\n || token instanceof tokens_1.StringTemplateBegin\r\n || token instanceof tokens_1.StringTemplateMiddle\r\n || token instanceof tokens_1.StringTemplateEnd) {\r\n continue;\r\n }\r\n if (str === \"\") {\r\n str = token.getStr();\r\n }\r\n else if (prev && prev.getStr().length + prev.getCol() === token.getCol()\r\n && prev.getRow() === token.getRow()) {\r\n str = str + token.getStr();\r\n }\r\n else {\r\n str = str + \" \" + token.getStr();\r\n }\r\n prev = token;\r\n }\r\n return str;\r\n }\r\n getTokens() {\r\n const tokens = [];\r\n for (const c of this.getChildren()) {\r\n tokens.push(...this.toTokens(c));\r\n }\r\n return tokens;\r\n }\r\n toTokens(b) {\r\n const tokens = [];\r\n if (b instanceof token_node_1.TokenNode) {\r\n tokens.push(b.get());\r\n return tokens;\r\n }\r\n for (const c of b.getChildren()) {\r\n if (c instanceof token_node_1.TokenNode) {\r\n tokens.push(c.get());\r\n }\r\n else {\r\n tokens.push(...this.toTokens(c));\r\n }\r\n }\r\n return tokens;\r\n }\r\n getLastToken() {\r\n const child = this.getLastChild();\r\n if (child) {\r\n return child.getLastToken();\r\n }\r\n throw new Error(\"ExpressionNode, getLastToken, no children\");\r\n }\r\n getAllTokens() {\r\n const ret = [];\r\n for (const child of this.getChildren()) {\r\n if (child instanceof token_node_1.TokenNode) {\r\n ret.push(child.get());\r\n }\r\n else {\r\n ret.push(...child.getAllTokens());\r\n }\r\n }\r\n return ret;\r\n }\r\n getDirectTokens() {\r\n const ret = [];\r\n for (const child of this.getChildren()) {\r\n if (child instanceof token_node_1.TokenNode) {\r\n ret.push(child.get());\r\n }\r\n }\r\n return ret;\r\n }\r\n findDirectExpression(type) {\r\n for (const child of this.getChildren()) {\r\n if (child instanceof ExpressionNode && child.get() instanceof type) {\r\n return child;\r\n }\r\n }\r\n return undefined;\r\n }\r\n findExpressionAfterToken(text) {\r\n const children = this.getChildren();\r\n for (let i = 0; i < children.length - 1; i++) {\r\n const c = children[i];\r\n const next = children[i + 1];\r\n if (c instanceof token_node_1.TokenNode\r\n && c.get().getStr().toUpperCase() === text.toUpperCase()\r\n && next instanceof ExpressionNode) {\r\n return next;\r\n }\r\n }\r\n return undefined;\r\n }\r\n findDirectExpressions(type) {\r\n const ret = [];\r\n for (const child of this.getChildren()) {\r\n if (child instanceof ExpressionNode && child.get() instanceof type) {\r\n ret.push(child);\r\n }\r\n }\r\n return ret;\r\n }\r\n findDirectTokenByText(text) {\r\n for (const child of this.getChildren()) {\r\n if (child instanceof token_node_1.TokenNode && child.get().getStr().toUpperCase() === text.toUpperCase()) {\r\n return child.get();\r\n }\r\n }\r\n return undefined;\r\n }\r\n findAllExpressionsRecursive(type) {\r\n const ret = [];\r\n for (const child of this.getChildren()) {\r\n if (child instanceof token_node_1.TokenNode) {\r\n continue;\r\n }\r\n else if (child.get() instanceof type) {\r\n ret.push(child);\r\n }\r\n ret.push(...child.findAllExpressionsRecursive(type));\r\n }\r\n return ret;\r\n }\r\n findAllExpressions(type) {\r\n const ret = [];\r\n for (const child of this.getChildren()) {\r\n if (child instanceof token_node_1.TokenNode) {\r\n continue;\r\n }\r\n else if (child.get() instanceof type) {\r\n ret.push(child);\r\n }\r\n else {\r\n ret.push(...child.findAllExpressions(type));\r\n }\r\n }\r\n return ret;\r\n }\r\n findAllExpressionsMulti(type, recursive = false) {\r\n const ret = [];\r\n for (const child of this.getChildren()) {\r\n if (child instanceof token_node_1.TokenNode) {\r\n continue;\r\n }\r\n const before = ret.length;\r\n for (const t of type) {\r\n if (child.get() instanceof t) {\r\n ret.push(child);\r\n }\r\n }\r\n if (before === ret.length || recursive === true) {\r\n ret.push(...child.findAllExpressionsMulti(type));\r\n }\r\n }\r\n return ret;\r\n }\r\n findFirstExpression(type) {\r\n if (this.get() instanceof type) {\r\n return this;\r\n }\r\n for (const child of this.getChildren()) {\r\n if (child instanceof token_node_1.TokenNode) {\r\n continue;\r\n }\r\n else if (child.get() instanceof type) {\r\n return child;\r\n }\r\n else {\r\n const res = child.findFirstExpression(type);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n }\r\n return undefined;\r\n }\r\n}\r\nexports.ExpressionNode = ExpressionNode;\r\n//# sourceMappingURL=expression_node.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/abap/nodes/expression_node.js?");
|
|
8479
8479
|
|
|
8480
8480
|
/***/ }),
|
|
8481
8481
|
|
|
@@ -8497,7 +8497,7 @@ eval("\r\nvar __createBinding = (this && this.__createBinding) || (Object.create
|
|
|
8497
8497
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
8498
8498
|
|
|
8499
8499
|
"use strict";
|
|
8500
|
-
eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.StatementNode = void 0;\r\nconst _abstract_node_1 = __webpack_require__(/*! ./_abstract_node */ \"./node_modules/@abaplint/core/build/src/abap/nodes/_abstract_node.js\");\r\nconst token_node_1 = __webpack_require__(/*! ./token_node */ \"./node_modules/@abaplint/core/build/src/abap/nodes/token_node.js\");\r\nconst expression_node_1 = __webpack_require__(/*! ./expression_node */ \"./node_modules/@abaplint/core/build/src/abap/nodes/expression_node.js\");\r\nconst comment_1 = __webpack_require__(/*! ../1_lexer/tokens/comment */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/comment.js\");\r\nconst pragma_1 = __webpack_require__(/*! ../1_lexer/tokens/pragma */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/pragma.js\");\r\nconst string_1 = __webpack_require__(/*! ../1_lexer/tokens/string */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/string.js\");\r\nclass StatementNode extends _abstract_node_1.AbstractNode {\r\n constructor(statement, colon, pragmas) {\r\n super();\r\n this.statement = statement;\r\n this.colon = colon;\r\n if (pragmas) {\r\n this.pragmas = pragmas;\r\n }\r\n else {\r\n this.pragmas = [];\r\n }\r\n }\r\n get() {\r\n return this.statement;\r\n }\r\n getColon() {\r\n return this.colon;\r\n }\r\n getPragmas() {\r\n return this.pragmas;\r\n }\r\n setChildren(children) {\r\n if (children.length === 0) {\r\n throw new Error(\"statement: zero children\");\r\n }\r\n this.children = children;\r\n return this;\r\n }\r\n getStart() {\r\n return this.getFirstToken().getStart();\r\n }\r\n getEnd() {\r\n const last = this.getLastToken();\r\n return last.getEnd();\r\n }\r\n getTokens() {\r\n const tokens = [];\r\n for (const c of this.getChildren()) {\r\n tokens.push(...this.toTokens(c));\r\n }\r\n return tokens;\r\n }\r\n includesToken(search) {\r\n for (const t of this.getTokens()) {\r\n if (t.getStart().equals(search.getStart())) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n getTokenNodes() {\r\n const tokens = [];\r\n for (const c of this.getChildren()) {\r\n tokens.push(...this.toTokenNodess(c));\r\n }\r\n return tokens;\r\n }\r\n concatTokens() {\r\n let str = \"\";\r\n let prev;\r\n for (const token of this.getTokens()) {\r\n if (token instanceof pragma_1.Pragma) {\r\n continue;\r\n }\r\n if (str === \"\") {\r\n str = token.getStr();\r\n }\r\n else if (prev && prev.getStr().length + prev.getCol() === token.getCol()\r\n && prev.getRow() === token.getRow()) {\r\n str = str + token.getStr();\r\n }\r\n else {\r\n str = str + \" \" + token.getStr();\r\n }\r\n prev = token;\r\n }\r\n return str;\r\n }\r\n concatTokensWithoutStringsAndComments() {\r\n let str = \"\";\r\n let prev;\r\n for (const token of this.getTokens()) {\r\n if (token instanceof comment_1.Comment\r\n || token instanceof string_1.String\r\n || token instanceof string_1.StringTemplate\r\n || token instanceof string_1.StringTemplateBegin\r\n || token instanceof string_1.StringTemplateMiddle\r\n || token instanceof string_1.StringTemplateEnd) {\r\n continue;\r\n }\r\n if (str === \"\") {\r\n str = token.getStr();\r\n }\r\n else if (prev && prev.getStr().length + prev.getCol() === token.getCol()\r\n && prev.getRow() === token.getRow()) {\r\n str = str + token.getStr();\r\n }\r\n else {\r\n str = str + \" \" + token.getStr();\r\n }\r\n prev = token;\r\n }\r\n return str;\r\n }\r\n getTerminator() {\r\n return this.getLastToken().getStr();\r\n }\r\n getFirstToken() {\r\n for (const child of this.getChildren()) {\r\n return child.getFirstToken();\r\n }\r\n throw new Error(\"StatementNode, getFirstToken, no children, \" + this.get().constructor.name);\r\n }\r\n getLastToken() {\r\n const child = this.getLastChild();\r\n if (child !== undefined) {\r\n return child.getLastToken();\r\n }\r\n throw new Error(\"StatementNode, getLastToken, no children\");\r\n }\r\n findDirectExpression(type) {\r\n for (const child of this.getChildren()) {\r\n if (child instanceof expression_node_1.ExpressionNode && child.get() instanceof type) {\r\n return child;\r\n }\r\n }\r\n return undefined;\r\n }\r\n findDirectExpressions(type) {\r\n const ret = [];\r\n for (const child of this.getChildren()) {\r\n if (child instanceof expression_node_1.ExpressionNode && child.get() instanceof type) {\r\n ret.push(child);\r\n }\r\n }\r\n return ret;\r\n }\r\n findDirectTokenByText(text) {\r\n const upper = text.toUpperCase();\r\n for (const child of this.getChildren()) {\r\n if (child instanceof token_node_1.TokenNode && child.get().getStr().toUpperCase() === upper) {\r\n return child.get();\r\n }\r\n }\r\n return undefined;\r\n }\r\n findFirstExpression(type) {\r\n for (const child of this.getChildren()) {\r\n if (child instanceof token_node_1.TokenNode) {\r\n continue;\r\n }\r\n else if (child.get() instanceof type) {\r\n return child;\r\n }\r\n else {\r\n const res = child.findFirstExpression(type);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n }\r\n return undefined;\r\n }\r\n findAllExpressions(type) {\r\n const ret = [];\r\n for (const child of this.getChildren()) {\r\n if (child instanceof token_node_1.TokenNode) {\r\n continue;\r\n }\r\n else if (child.get() instanceof type) {\r\n ret.push(child);\r\n }\r\n else {\r\n ret.push(...child.findAllExpressions(type));\r\n }\r\n }\r\n return ret;\r\n }\r\n findAllExpressionsRecursive(type) {\r\n const ret = [];\r\n for (const child of this.getChildren()) {\r\n if (child instanceof token_node_1.TokenNode) {\r\n continue;\r\n }\r\n else if (child.get() instanceof type) {\r\n ret.push(child);\r\n }\r\n ret.push(...child.findAllExpressionsRecursive(type));\r\n }\r\n return ret;\r\n }\r\n findAllExpressionsMulti(type, recursive = false) {\r\n const ret = [];\r\n for (const child of this.getChildren()) {\r\n if (child instanceof token_node_1.TokenNode) {\r\n continue;\r\n }\r\n const before = ret.length;\r\n for (const t of type) {\r\n if (child.get() instanceof t) {\r\n ret.push(child);\r\n }\r\n }\r\n if (before === ret.length || recursive === true) {\r\n ret.push(...child.findAllExpressionsMulti(type));\r\n }\r\n }\r\n return ret;\r\n }\r\n /**\r\n * Returns the Position of the first token if the sequence is found,\r\n * otherwise undefined. Strings and Comments are ignored in this search.\r\n * @param first - Text of the first Token\r\n * @param second - Text of the second Token\r\n */\r\n findTokenSequencePosition(first, second) {\r\n let prev;\r\n for (const token of this.getTokens()) {\r\n if (token instanceof comment_1.Comment\r\n || token instanceof string_1.String\r\n || token instanceof string_1.StringTemplate\r\n || token instanceof string_1.StringTemplateBegin\r\n || token instanceof string_1.StringTemplateMiddle\r\n || token instanceof string_1.StringTemplateEnd) {\r\n continue;\r\n }\r\n if (prev && token.getStr().toUpperCase() === second && (prev === null || prev === void 0 ? void 0 : prev.getStr().toUpperCase()) === first.toUpperCase()) {\r\n return prev.getStart();\r\n }\r\n else {\r\n prev = token;\r\n }\r\n }\r\n return undefined;\r\n }\r\n findExpressionAfterToken(text) {\r\n const children = this.getChildren();\r\n for (let i = 0; i < children.length - 1; i++) {\r\n const c = children[i];\r\n const next = children[i + 1];\r\n if (c instanceof token_node_1.TokenNode\r\n && c.get().getStr().toUpperCase() === text.toUpperCase()\r\n && next instanceof expression_node_1.ExpressionNode) {\r\n return next;\r\n }\r\n }\r\n return undefined;\r\n }\r\n ////////////////////////////////\r\n toTokens(b) {\r\n const tokens = [];\r\n if (b instanceof token_node_1.TokenNode) {\r\n tokens.push(b.get());\r\n return tokens;\r\n }\r\n for (const c of b.getChildren()) {\r\n if (c instanceof token_node_1.TokenNode) {\r\n tokens.push(c.get());\r\n }\r\n else {\r\n tokens.push(...this.toTokens(c));\r\n }\r\n }\r\n return tokens;\r\n }\r\n toTokenNodess(b) {\r\n const tokens = [];\r\n if (b instanceof token_node_1.TokenNode) {\r\n tokens.push(b);\r\n return tokens;\r\n }\r\n for (const c of b.getChildren()) {\r\n if (c instanceof token_node_1.TokenNode) {\r\n tokens.push(c);\r\n }\r\n else {\r\n tokens.push(...this.toTokenNodess(c));\r\n }\r\n }\r\n return tokens;\r\n }\r\n}\r\nexports.StatementNode = StatementNode;\r\n//# sourceMappingURL=statement_node.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/abap/nodes/statement_node.js?");
|
|
8500
|
+
eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.StatementNode = void 0;\r\nconst _abstract_node_1 = __webpack_require__(/*! ./_abstract_node */ \"./node_modules/@abaplint/core/build/src/abap/nodes/_abstract_node.js\");\r\nconst token_node_1 = __webpack_require__(/*! ./token_node */ \"./node_modules/@abaplint/core/build/src/abap/nodes/token_node.js\");\r\nconst expression_node_1 = __webpack_require__(/*! ./expression_node */ \"./node_modules/@abaplint/core/build/src/abap/nodes/expression_node.js\");\r\nconst comment_1 = __webpack_require__(/*! ../1_lexer/tokens/comment */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/comment.js\");\r\nconst pragma_1 = __webpack_require__(/*! ../1_lexer/tokens/pragma */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/pragma.js\");\r\nconst string_1 = __webpack_require__(/*! ../1_lexer/tokens/string */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/string.js\");\r\nclass StatementNode extends _abstract_node_1.AbstractNode {\r\n constructor(statement, colon, pragmas) {\r\n super();\r\n this.statement = statement;\r\n this.colon = colon;\r\n if (pragmas) {\r\n this.pragmas = pragmas;\r\n }\r\n else {\r\n this.pragmas = [];\r\n }\r\n }\r\n get() {\r\n return this.statement;\r\n }\r\n getColon() {\r\n return this.colon;\r\n }\r\n getPragmas() {\r\n return this.pragmas;\r\n }\r\n setChildren(children) {\r\n if (children.length === 0) {\r\n throw new Error(\"statement: zero children\");\r\n }\r\n this.children = children;\r\n return this;\r\n }\r\n getStart() {\r\n return this.getFirstToken().getStart();\r\n }\r\n getEnd() {\r\n const last = this.getLastToken();\r\n return last.getEnd();\r\n }\r\n getTokens() {\r\n const tokens = [];\r\n for (const c of this.getChildren()) {\r\n tokens.push(...this.toTokens(c));\r\n }\r\n return tokens;\r\n }\r\n includesToken(search) {\r\n for (const t of this.getTokens()) {\r\n if (t.getStart().equals(search.getStart())) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n getTokenNodes() {\r\n const tokens = [];\r\n for (const c of this.getChildren()) {\r\n tokens.push(...this.toTokenNodess(c));\r\n }\r\n return tokens;\r\n }\r\n concatTokens() {\r\n let str = \"\";\r\n let prev;\r\n for (const token of this.getTokens()) {\r\n if (token instanceof pragma_1.Pragma) {\r\n continue;\r\n }\r\n if (str === \"\") {\r\n str = token.getStr();\r\n }\r\n else if (prev && prev.getStr().length + prev.getCol() === token.getCol()\r\n && prev.getRow() === token.getRow()) {\r\n str = str + token.getStr();\r\n }\r\n else {\r\n str = str + \" \" + token.getStr();\r\n }\r\n prev = token;\r\n }\r\n return str;\r\n }\r\n concatTokensWithoutStringsAndComments() {\r\n let str = \"\";\r\n let prev;\r\n for (const token of this.getTokens()) {\r\n if (token instanceof comment_1.Comment\r\n || token instanceof string_1.String\r\n || token instanceof string_1.StringTemplate\r\n || token instanceof string_1.StringTemplateBegin\r\n || token instanceof string_1.StringTemplateMiddle\r\n || token instanceof string_1.StringTemplateEnd) {\r\n continue;\r\n }\r\n if (str === \"\") {\r\n str = token.getStr();\r\n }\r\n else if (prev && prev.getStr().length + prev.getCol() === token.getCol()\r\n && prev.getRow() === token.getRow()) {\r\n str = str + token.getStr();\r\n }\r\n else {\r\n str = str + \" \" + token.getStr();\r\n }\r\n prev = token;\r\n }\r\n return str;\r\n }\r\n getTerminator() {\r\n return this.getLastToken().getStr();\r\n }\r\n getFirstToken() {\r\n for (const child of this.getChildren()) {\r\n return child.getFirstToken();\r\n }\r\n throw new Error(\"StatementNode, getFirstToken, no children, \" + this.get().constructor.name);\r\n }\r\n getLastToken() {\r\n const child = this.getLastChild();\r\n if (child !== undefined) {\r\n return child.getLastToken();\r\n }\r\n throw new Error(\"StatementNode, getLastToken, no children\");\r\n }\r\n findDirectExpression(type) {\r\n for (const child of this.getChildren()) {\r\n if (child instanceof expression_node_1.ExpressionNode && child.get() instanceof type) {\r\n return child;\r\n }\r\n }\r\n return undefined;\r\n }\r\n findDirectExpressions(type) {\r\n const ret = [];\r\n for (const child of this.getChildren()) {\r\n if (child instanceof expression_node_1.ExpressionNode && child.get() instanceof type) {\r\n ret.push(child);\r\n }\r\n }\r\n return ret;\r\n }\r\n findDirectTokenByText(text) {\r\n const upper = text.toUpperCase();\r\n for (const child of this.getChildren()) {\r\n if (child instanceof token_node_1.TokenNode && child.get().getStr().toUpperCase() === upper) {\r\n return child.get();\r\n }\r\n }\r\n return undefined;\r\n }\r\n findFirstExpression(type) {\r\n for (const child of this.getChildren()) {\r\n if (child instanceof token_node_1.TokenNode) {\r\n continue;\r\n }\r\n else if (child.get() instanceof type) {\r\n return child;\r\n }\r\n else {\r\n const res = child.findFirstExpression(type);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n }\r\n return undefined;\r\n }\r\n findAllExpressions(type) {\r\n const ret = [];\r\n for (const child of this.getChildren()) {\r\n if (child instanceof token_node_1.TokenNode) {\r\n continue;\r\n }\r\n else if (child.get() instanceof type) {\r\n ret.push(child);\r\n }\r\n else {\r\n ret.push(...child.findAllExpressions(type));\r\n }\r\n }\r\n return ret;\r\n }\r\n findAllExpressionsRecursive(type) {\r\n const ret = [];\r\n for (const child of this.getChildren()) {\r\n if (child instanceof token_node_1.TokenNode) {\r\n continue;\r\n }\r\n else if (child.get() instanceof type) {\r\n ret.push(child);\r\n }\r\n ret.push(...child.findAllExpressionsRecursive(type));\r\n }\r\n return ret;\r\n }\r\n findAllExpressionsMulti(type, recursive = false) {\r\n const ret = [];\r\n for (const child of this.getChildren()) {\r\n if (child instanceof token_node_1.TokenNode) {\r\n continue;\r\n }\r\n const before = ret.length;\r\n for (const t of type) {\r\n if (child.get() instanceof t) {\r\n ret.push(child);\r\n }\r\n }\r\n if (before === ret.length || recursive === true) {\r\n ret.push(...child.findAllExpressionsMulti(type, recursive));\r\n }\r\n }\r\n return ret;\r\n }\r\n /**\r\n * Returns the Position of the first token if the sequence is found,\r\n * otherwise undefined. Strings and Comments are ignored in this search.\r\n * @param first - Text of the first Token\r\n * @param second - Text of the second Token\r\n */\r\n findTokenSequencePosition(first, second) {\r\n let prev;\r\n for (const token of this.getTokens()) {\r\n if (token instanceof comment_1.Comment\r\n || token instanceof string_1.String\r\n || token instanceof string_1.StringTemplate\r\n || token instanceof string_1.StringTemplateBegin\r\n || token instanceof string_1.StringTemplateMiddle\r\n || token instanceof string_1.StringTemplateEnd) {\r\n continue;\r\n }\r\n if (prev && token.getStr().toUpperCase() === second && (prev === null || prev === void 0 ? void 0 : prev.getStr().toUpperCase()) === first.toUpperCase()) {\r\n return prev.getStart();\r\n }\r\n else {\r\n prev = token;\r\n }\r\n }\r\n return undefined;\r\n }\r\n findExpressionAfterToken(text) {\r\n const children = this.getChildren();\r\n for (let i = 0; i < children.length - 1; i++) {\r\n const c = children[i];\r\n const next = children[i + 1];\r\n if (c instanceof token_node_1.TokenNode\r\n && c.get().getStr().toUpperCase() === text.toUpperCase()\r\n && next instanceof expression_node_1.ExpressionNode) {\r\n return next;\r\n }\r\n }\r\n return undefined;\r\n }\r\n ////////////////////////////////\r\n toTokens(b) {\r\n const tokens = [];\r\n if (b instanceof token_node_1.TokenNode) {\r\n tokens.push(b.get());\r\n return tokens;\r\n }\r\n for (const c of b.getChildren()) {\r\n if (c instanceof token_node_1.TokenNode) {\r\n tokens.push(c.get());\r\n }\r\n else {\r\n tokens.push(...this.toTokens(c));\r\n }\r\n }\r\n return tokens;\r\n }\r\n toTokenNodess(b) {\r\n const tokens = [];\r\n if (b instanceof token_node_1.TokenNode) {\r\n tokens.push(b);\r\n return tokens;\r\n }\r\n for (const c of b.getChildren()) {\r\n if (c instanceof token_node_1.TokenNode) {\r\n tokens.push(c);\r\n }\r\n else {\r\n tokens.push(...this.toTokenNodess(c));\r\n }\r\n }\r\n return tokens;\r\n }\r\n}\r\nexports.StatementNode = StatementNode;\r\n//# sourceMappingURL=statement_node.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/abap/nodes/statement_node.js?");
|
|
8501
8501
|
|
|
8502
8502
|
/***/ }),
|
|
8503
8503
|
|
|
@@ -8926,7 +8926,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
|
|
|
8926
8926
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
8927
8927
|
|
|
8928
8928
|
"use strict";
|
|
8929
|
-
eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ClassDefinition = void 0;\r\nconst method_definitions_1 = __webpack_require__(/*! ./method_definitions */ \"./node_modules/@abaplint/core/build/src/abap/types/method_definitions.js\");\r\nconst expressions_1 = __webpack_require__(/*! ../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\r\nconst Statements = __webpack_require__(/*! ../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\r\nconst Structures = __webpack_require__(/*! ../3_structures/structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\r\nconst Expressions = __webpack_require__(/*! ../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\r\nconst class_attributes_1 = __webpack_require__(/*! ./class_attributes */ \"./node_modules/@abaplint/core/build/src/abap/types/class_attributes.js\");\r\nconst _identifier_1 = __webpack_require__(/*! ../4_file_information/_identifier */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/_identifier.js\");\r\nconst aliases_1 = __webpack_require__(/*! ./aliases */ \"./node_modules/@abaplint/core/build/src/abap/types/aliases.js\");\r\nconst _scope_type_1 = __webpack_require__(/*! ../5_syntax/_scope_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js\");\r\nconst event_definition_1 = __webpack_require__(/*! ./event_definition */ \"./node_modules/@abaplint/core/build/src/abap/types/event_definition.js\");\r\nconst visibility_1 = __webpack_require__(/*! ../4_file_information/visibility */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/visibility.js\");\r\nconst _object_oriented_1 = __webpack_require__(/*! ../5_syntax/_object_oriented */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_object_oriented.js\");\r\nconst _reference_1 = __webpack_require__(/*! ../5_syntax/_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\r\nclass ClassDefinition extends _identifier_1.Identifier {\r\n constructor(node, filename, scope) {\r\n if (!(node.get() instanceof Structures.ClassDefinition)) {\r\n throw new Error(\"ClassDefinition, unexpected node type\");\r\n }\r\n const def = node.findFirstStatement(Statements.ClassDefinition);\r\n const name = def.findDirectExpression(Expressions.ClassName).getFirstToken();\r\n super(name, filename);\r\n scope.addClassDefinition(this);\r\n this.node = node;\r\n this.events = [];\r\n this.implementing = [];\r\n scope.push(_scope_type_1.ScopeType.ClassDefinition, name.getStr(), name.getStart(), filename);\r\n this.superClass = this.findSuper(def, filename, scope);\r\n this.friends = this.findFriends(def, filename, scope);\r\n this.parse(filename, scope);\r\n const helper = new _object_oriented_1.ObjectOriented(scope);\r\n
|
|
8929
|
+
eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ClassDefinition = void 0;\r\nconst method_definitions_1 = __webpack_require__(/*! ./method_definitions */ \"./node_modules/@abaplint/core/build/src/abap/types/method_definitions.js\");\r\nconst expressions_1 = __webpack_require__(/*! ../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\r\nconst Statements = __webpack_require__(/*! ../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\r\nconst Structures = __webpack_require__(/*! ../3_structures/structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\r\nconst Expressions = __webpack_require__(/*! ../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\r\nconst class_attributes_1 = __webpack_require__(/*! ./class_attributes */ \"./node_modules/@abaplint/core/build/src/abap/types/class_attributes.js\");\r\nconst _identifier_1 = __webpack_require__(/*! ../4_file_information/_identifier */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/_identifier.js\");\r\nconst aliases_1 = __webpack_require__(/*! ./aliases */ \"./node_modules/@abaplint/core/build/src/abap/types/aliases.js\");\r\nconst _scope_type_1 = __webpack_require__(/*! ../5_syntax/_scope_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js\");\r\nconst event_definition_1 = __webpack_require__(/*! ./event_definition */ \"./node_modules/@abaplint/core/build/src/abap/types/event_definition.js\");\r\nconst visibility_1 = __webpack_require__(/*! ../4_file_information/visibility */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/visibility.js\");\r\nconst _object_oriented_1 = __webpack_require__(/*! ../5_syntax/_object_oriented */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_object_oriented.js\");\r\nconst _reference_1 = __webpack_require__(/*! ../5_syntax/_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\r\nclass ClassDefinition extends _identifier_1.Identifier {\r\n constructor(node, filename, scope) {\r\n if (!(node.get() instanceof Structures.ClassDefinition)) {\r\n throw new Error(\"ClassDefinition, unexpected node type\");\r\n }\r\n const def = node.findFirstStatement(Statements.ClassDefinition);\r\n const name = def.findDirectExpression(Expressions.ClassName).getFirstToken();\r\n super(name, filename);\r\n scope.addClassDefinition(this);\r\n this.node = node;\r\n this.events = [];\r\n this.implementing = [];\r\n scope.push(_scope_type_1.ScopeType.ClassDefinition, name.getStr(), name.getStart(), filename);\r\n this.superClass = this.findSuper(def, filename, scope);\r\n this.friends = this.findFriends(def, filename, scope);\r\n this.parse(filename, scope);\r\n const helper = new _object_oriented_1.ObjectOriented(scope);\r\n helper.fromSuperClassesAndInterfaces(this);\r\n this.attributes = new class_attributes_1.Attributes(this.node, this.filename, scope);\r\n this.types = this.attributes.getTypes();\r\n this.methodDefs = new method_definitions_1.MethodDefinitions(this.node, this.filename, scope);\r\n const events = this.node.findAllStatements(Statements.Events);\r\n for (const e of events) {\r\n this.events.push(new event_definition_1.EventDefinition(e, visibility_1.Visibility.Public, this.filename, scope)); // todo, all these are not Public\r\n }\r\n scope.pop(node.getLastToken().getEnd());\r\n const concat = this.node.findFirstStatement(Statements.ClassDefinition).concatTokens().toUpperCase();\r\n this.testing = concat.includes(\" FOR TESTING\");\r\n this.abstract = concat.includes(\" ABSTRACT\");\r\n }\r\n getFriends() {\r\n return this.friends;\r\n }\r\n getEvents() {\r\n return this.events;\r\n }\r\n getMethodDefinitions() {\r\n return this.methodDefs;\r\n }\r\n getTypeDefinitions() {\r\n return this.types;\r\n }\r\n getSuperClass() {\r\n return this.superClass;\r\n }\r\n getAttributes() {\r\n return this.attributes;\r\n }\r\n isGlobal() {\r\n return this.node.findFirstExpression(Expressions.ClassGlobal) !== undefined;\r\n }\r\n isFinal() {\r\n return this.node.findFirstExpression(Expressions.ClassFinal) !== undefined;\r\n }\r\n getImplementing() {\r\n return this.implementing;\r\n }\r\n getAliases() {\r\n return this.aliases;\r\n }\r\n isForTesting() {\r\n return this.testing;\r\n }\r\n isAbstract() {\r\n return this.abstract;\r\n }\r\n /*\r\n public getEvents() {\r\n }\r\n */\r\n ///////////////////\r\n findSuper(def, filename, scope) {\r\n var _a;\r\n const token = (_a = def === null || def === void 0 ? void 0 : def.findDirectExpression(expressions_1.SuperClassName)) === null || _a === void 0 ? void 0 : _a.getFirstToken();\r\n this.addReference(token, filename, scope);\r\n const name = token === null || token === void 0 ? void 0 : token.getStr();\r\n return name;\r\n }\r\n findFriends(def, filename, scope) {\r\n var _a;\r\n const result = [];\r\n for (const n of ((_a = def === null || def === void 0 ? void 0 : def.findDirectExpression(Expressions.ClassFriends)) === null || _a === void 0 ? void 0 : _a.findDirectExpressions(Expressions.ClassName)) || []) {\r\n const token = n.getFirstToken();\r\n this.addReference(token, filename, scope);\r\n const name = token.getStr();\r\n result.push(name);\r\n }\r\n return result;\r\n }\r\n addReference(token, filename, scope) {\r\n const name = token === null || token === void 0 ? void 0 : token.getStr();\r\n if (name) {\r\n const s = scope.findClassDefinition(name);\r\n if (s) {\r\n scope.addReference(token, s, _reference_1.ReferenceType.ObjectOrientedReference, filename, { ooName: name.toUpperCase(), ooType: \"CLAS\" });\r\n }\r\n else if (scope.getDDIC().inErrorNamespace(name) === false) {\r\n scope.addReference(token, undefined, _reference_1.ReferenceType.ObjectOrientedVoidReference, filename);\r\n }\r\n }\r\n }\r\n parse(filename, scope) {\r\n var _a;\r\n for (const node of this.node.findAllStatements(Statements.InterfaceDef)) {\r\n const partial = node.concatTokens().toUpperCase().includes(\" PARTIALLY IMPLEMENTED\");\r\n const token = (_a = node.findFirstExpression(Expressions.InterfaceName)) === null || _a === void 0 ? void 0 : _a.getFirstToken();\r\n if (token === undefined) {\r\n throw new Error(\"ClassDefinition, unable to find interface token\");\r\n }\r\n const name = token.getStr().toUpperCase();\r\n this.implementing.push({ name, partial });\r\n const intf = scope.findInterfaceDefinition(name);\r\n if (intf) {\r\n scope.addReference(token, intf, _reference_1.ReferenceType.ObjectOrientedReference, filename, { ooName: name.toUpperCase(), ooType: \"INTF\" });\r\n }\r\n else if (scope.getDDIC().inErrorNamespace(name) === false) {\r\n scope.addReference(token, undefined, _reference_1.ReferenceType.ObjectOrientedVoidReference, filename, { ooName: name.toUpperCase(), ooType: \"INTF\" });\r\n }\r\n else {\r\n scope.addReference(token, undefined, _reference_1.ReferenceType.ObjectOrientedUnknownReference, filename, { ooName: name.toUpperCase(), ooType: \"INTF\" });\r\n }\r\n }\r\n this.aliases = new aliases_1.Aliases(this.node, this.filename, scope);\r\n }\r\n}\r\nexports.ClassDefinition = ClassDefinition;\r\n//# sourceMappingURL=class_definition.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/abap/types/class_definition.js?");
|
|
8930
8930
|
|
|
8931
8931
|
/***/ }),
|
|
8932
8932
|
|
|
@@ -9146,7 +9146,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
|
|
|
9146
9146
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
9147
9147
|
|
|
9148
9148
|
"use strict";
|
|
9149
|
-
eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.applyEditList = exports.applyEditSingle = exports.EditHelper = exports.EditDraft = void 0;\r\nconst position_1 = __webpack_require__(/*! ./position */ \"./node_modules/@abaplint/core/build/src/position.js\");\r\nconst memory_file_1 = __webpack_require__(/*! ./files/memory_file */ \"./node_modules/@abaplint/core/build/src/files/memory_file.js\");\r\nclass EditDraft {\r\n constructor(file) {\r\n this.start = undefined;\r\n this.end = undefined;\r\n this.rows = file.getRawRows();\r\n this.file = file;\r\n }\r\n /** replace existing text, insert text wont work */\r\n replace(pos, value) {\r\n if (this.start === undefined || pos.isBefore(this.start)) {\r\n this.start = pos;\r\n }\r\n const end = new position_1.Position(pos.getRow(), pos.getCol() + value.length);\r\n if (this.end === undefined || end.isAfter(this.end)) {\r\n this.end = end;\r\n }\r\n const str = this.rows[pos.getRow() - 1];\r\n this.rows[pos.getRow() - 1] = str.substr(0, pos.getCol() - 1) + value + str.substr(pos.getCol() + value.length - 1);\r\n }\r\n toEdit() {\r\n if (this.start === undefined) {\r\n throw \"EditDraft, start undefined\";\r\n }\r\n else if (this.end === undefined) {\r\n throw \"EditDraft, end undefined\";\r\n }\r\n let value = \"\";\r\n for (let row = this.start.getRow(); row <= this.end.getRow(); row++) {\r\n if (row === this.start.getRow() && row === this.end.getRow()) {\r\n // first and last row\r\n value = this.rows[row - 1].substring(this.start.getCol() - 1, this.end.getCol() - 1);\r\n }\r\n else if (row === this.start.getRow()) {\r\n // first row\r\n value = this.rows[row - 1].substring(this.start.getCol() - 1);\r\n }\r\n else if (row === this.end.getRow()) {\r\n // last row\r\n value += \"\\n\" + this.rows[row - 1].substring(0, this.end.getCol() - 1);\r\n }\r\n else {\r\n // middle row\r\n value += \"\\n\" + this.rows[row - 1];\r\n }\r\n }\r\n return EditHelper.replaceRange(this.file, this.start, this.end, value);\r\n }\r\n}\r\nexports.EditDraft = EditDraft;\r\nclass EditHelper {\r\n static mergeList(fixes) {\r\n const results = {};\r\n for (const f of fixes) {\r\n for (const filename in f) {\r\n if (results[filename] === undefined) {\r\n results[filename] = [];\r\n }\r\n results[filename] = results[filename].concat(f[filename]);\r\n }\r\n }\r\n return results;\r\n }\r\n static merge(fix1, fix2) {\r\n const ret = {};\r\n for (const k of Object.keys(fix1)) {\r\n if (ret[k] === undefined) {\r\n ret[k] = [];\r\n }\r\n ret[k] = ret[k].concat(fix1[k]);\r\n }\r\n for (const k of Object.keys(fix2)) {\r\n if (ret[k] === undefined) {\r\n ret[k] = [];\r\n }\r\n ret[k] = ret[k].concat(fix2[k]);\r\n }\r\n return ret;\r\n }\r\n static findStatement(token, file) {\r\n if (file === undefined) {\r\n return undefined;\r\n }\r\n for (const s of file.getStatements()) {\r\n if (s.includesToken(token)) {\r\n return s;\r\n }\r\n }\r\n return undefined;\r\n }\r\n static deleteStatement(file, statement) {\r\n const scolon = statement.getColon();\r\n if (scolon === undefined) {\r\n return EditHelper.deleteRange(file, statement.getFirstToken().getStart(), statement.getLastToken().getEnd());\r\n }\r\n // find statements part of chain\r\n let chainCount = 0;\r\n let setPrevious = true;\r\n /** previous statement in the chain */\r\n let previousStatement = undefined;\r\n for (const s of file.getStatements()) {\r\n const colon = s.getColon();\r\n if (colon === undefined) {\r\n continue;\r\n }\r\n else if (s === statement) {\r\n setPrevious = false;\r\n continue;\r\n }\r\n else if (colon.getStart().equals(scolon.getStart())) {\r\n chainCount = chainCount + 1;\r\n }\r\n if (setPrevious === true) {\r\n previousStatement = s;\r\n }\r\n }\r\n if (chainCount === 0) {\r\n // the statement to be deleted is the only one in the chain\r\n return EditHelper.deleteRange(file, statement.getFirstToken().getStart(), statement.getLastToken().getEnd());\r\n }\r\n // the start of deletion should happen for tokens after the colon\r\n let startDelete = statement.getFirstToken().getStart();\r\n for (const t of statement.getTokens()) {\r\n if (t.getStart().isAfter(scolon.getEnd())) {\r\n startDelete = t.getStart();\r\n break;\r\n }\r\n }\r\n if (statement.getLastToken().getStr() === \".\" && previousStatement) {\r\n const edit1 = EditHelper.replaceToken(file, previousStatement.getLastToken(), \".\");\r\n const edit2 = EditHelper.deleteRange(file, startDelete, statement.getLastToken().getEnd());\r\n return EditHelper.merge(edit1, edit2);\r\n }\r\n else {\r\n return EditHelper.deleteRange(file, startDelete, statement.getLastToken().getEnd());\r\n }\r\n }\r\n static deleteToken(file, token) {\r\n const filename = file.getFilename();\r\n const range = { start: token.getStart(), end: token.getEnd() };\r\n return { [filename]: [{ range, newText: \"\" }] };\r\n }\r\n static deleteRange(file, start, end) {\r\n const filename = file.getFilename();\r\n const range = { start, end };\r\n return { [filename]: [{ range, newText: \"\" }] };\r\n }\r\n static insertAt(file, pos, text) {\r\n const filename = file.getFilename();\r\n const range = { start: pos, end: pos };\r\n return { [filename]: [{ range, newText: text }] };\r\n }\r\n static replaceToken(file, token, text) {\r\n return this.replaceRange(file, token.getStart(), token.getEnd(), text);\r\n }\r\n static replaceRange(file, start, end, text) {\r\n const filename = file.getFilename();\r\n const range = { start, end };\r\n return { [filename]: [{ range, newText: text }] };\r\n }\r\n}\r\nexports.EditHelper = EditHelper;\r\nfunction applyEditSingle(reg, edit) {\r\n var _a;\r\n for (const filename in edit) {\r\n let rows = (_a = reg.getFileByName(filename)) === null || _a === void 0 ? void 0 : _a.getRawRows();\r\n if (rows === undefined) {\r\n throw new Error(\"applyEdit, file not found\");\r\n }\r\n for (const e of edit[filename]) {\r\n if (e.range.start.getRow() === e.range.end.getRow()) {\r\n const line = rows[e.range.start.getRow() - 1];\r\n rows[e.range.start.getRow() - 1] =\r\n line.substr(0, e.range.start.getCol() - 1) +\r\n e.newText +\r\n line.substr(e.range.end.getCol() - 1);\r\n }\r\n else {\r\n const first = rows[e.range.start.getRow() - 1];\r\n let res = first.substr(0, e.range.start.getCol() - 1) + e.newText;\r\n const last = rows[e.range.end.getRow() - 1];\r\n res = res + last.substr(e.range.end.getCol() - 1);\r\n // delete middle lines\r\n rows.splice(e.range.start.getRow(), e.range.end.getRow() - e.range.start.getRow());\r\n // clean up\r\n rows[e.range.start.getRow() - 1] = res;\r\n rows = rows.join(\"\\n\").split(\"\\n\"); // if the edit contained newlines and multiple edits\r\n }\r\n }\r\n const result = new memory_file_1.MemoryFile(filename, rows.join(\"\\n\"));\r\n reg.updateFile(result);\r\n }\r\n}\r\nexports.applyEditSingle = applyEditSingle;\r\n/** returns list of filenames which were changed */\r\nfunction applyEditList(reg, edits) {\r\n const ret = [];\r\n let length = 0;\r\n const merged = {};\r\n for (const e of edits) {\r\n for (const f in e) {\r\n if (merged[f] === undefined) {\r\n merged[f] = [];\r\n length = length + 1;\r\n }\r\n merged[f] = merged[f].concat(e[f]);\r\n }\r\n }\r\n for (const f in merged) {\r\n const singleFile = {};\r\n // sort, start with the last position first\r\n singleFile[f] = merged[f].sort((a, b) => {\r\n let val = b.range.start.getRow() - a.range.start.getRow();\r\n if (val === 0) {\r\n val = b.range.start.getCol() - a.range.start.getCol();\r\n }\r\n return val;\r\n });\r\n applyEditSingle(reg, singleFile);\r\n ret.push(f);\r\n }\r\n return ret;\r\n}\r\nexports.applyEditList = applyEditList;\r\n//# sourceMappingURL=edit_helper.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/edit_helper.js?");
|
|
9149
|
+
eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.applyEditList = exports.applyEditSingle = exports.EditHelper = exports.EditDraft = void 0;\r\nconst position_1 = __webpack_require__(/*! ./position */ \"./node_modules/@abaplint/core/build/src/position.js\");\r\nconst memory_file_1 = __webpack_require__(/*! ./files/memory_file */ \"./node_modules/@abaplint/core/build/src/files/memory_file.js\");\r\nclass EditDraft {\r\n constructor(file) {\r\n this.start = undefined;\r\n this.end = undefined;\r\n this.rows = file.getRawRows();\r\n this.file = file;\r\n }\r\n /** replace existing text, insert text wont work */\r\n replace(pos, value) {\r\n if (this.start === undefined || pos.isBefore(this.start)) {\r\n this.start = pos;\r\n }\r\n const end = new position_1.Position(pos.getRow(), pos.getCol() + value.length);\r\n if (this.end === undefined || end.isAfter(this.end)) {\r\n this.end = end;\r\n }\r\n const str = this.rows[pos.getRow() - 1];\r\n this.rows[pos.getRow() - 1] = str.substr(0, pos.getCol() - 1) + value + str.substr(pos.getCol() + value.length - 1);\r\n }\r\n toEdit() {\r\n if (this.start === undefined) {\r\n throw \"EditDraft, start undefined\";\r\n }\r\n else if (this.end === undefined) {\r\n throw \"EditDraft, end undefined\";\r\n }\r\n let value = \"\";\r\n for (let row = this.start.getRow(); row <= this.end.getRow(); row++) {\r\n if (row === this.start.getRow() && row === this.end.getRow()) {\r\n // first and last row\r\n value = this.rows[row - 1].substring(this.start.getCol() - 1, this.end.getCol() - 1);\r\n }\r\n else if (row === this.start.getRow()) {\r\n // first row\r\n value = this.rows[row - 1].substring(this.start.getCol() - 1);\r\n }\r\n else if (row === this.end.getRow()) {\r\n // last row\r\n value += \"\\n\" + this.rows[row - 1].substring(0, this.end.getCol() - 1);\r\n }\r\n else {\r\n // middle row\r\n value += \"\\n\" + this.rows[row - 1];\r\n }\r\n }\r\n return EditHelper.replaceRange(this.file, this.start, this.end, value);\r\n }\r\n}\r\nexports.EditDraft = EditDraft;\r\nclass EditHelper {\r\n static mergeList(fixes) {\r\n const results = {};\r\n for (const f of fixes) {\r\n for (const filename in f) {\r\n if (results[filename] === undefined) {\r\n results[filename] = [];\r\n }\r\n results[filename] = results[filename].concat(f[filename]);\r\n }\r\n }\r\n return results;\r\n }\r\n static merge(fix1, fix2) {\r\n const ret = {};\r\n for (const k of Object.keys(fix1)) {\r\n if (ret[k] === undefined) {\r\n ret[k] = [];\r\n }\r\n ret[k] = ret[k].concat(fix1[k]);\r\n }\r\n for (const k of Object.keys(fix2)) {\r\n if (ret[k] === undefined) {\r\n ret[k] = [];\r\n }\r\n ret[k] = ret[k].concat(fix2[k]);\r\n }\r\n return ret;\r\n }\r\n static findStatement(token, file) {\r\n if (file === undefined) {\r\n return undefined;\r\n }\r\n for (const s of file.getStatements()) {\r\n if (s.includesToken(token)) {\r\n return s;\r\n }\r\n }\r\n return undefined;\r\n }\r\n static deleteStatement(file, statement) {\r\n const scolon = statement.getColon();\r\n if (scolon === undefined) {\r\n return EditHelper.deleteRange(file, statement.getFirstToken().getStart(), statement.getLastToken().getEnd());\r\n }\r\n let setPrevious = true;\r\n let setNext = true;\r\n /** previous statement in the chain */\r\n let previousStatement = undefined;\r\n /** next statement in the chain */\r\n let nextStatement = undefined;\r\n for (const s of file.getStatements()) {\r\n const colon = s.getColon();\r\n if (colon === undefined) {\r\n continue;\r\n }\r\n else if (s === statement) {\r\n setPrevious = false;\r\n setNext = true;\r\n continue;\r\n }\r\n else if (setPrevious === true) {\r\n if (scolon.getStart().equals(colon.getStart())) {\r\n previousStatement = s;\r\n }\r\n }\r\n else if (setNext === true) {\r\n if (scolon.getStart().equals(colon.getStart())) {\r\n nextStatement = s;\r\n }\r\n break;\r\n }\r\n }\r\n if (previousStatement === undefined && nextStatement === undefined) {\r\n // the statement to be deleted is the only one in the chain\r\n return EditHelper.deleteRange(file, statement.getFirstToken().getStart(), statement.getLastToken().getEnd());\r\n }\r\n // the start of deletion should happen for tokens after the colon\r\n let startDelete = statement.getFirstToken().getStart();\r\n for (const t of statement.getTokens()) {\r\n if (t.getStart().isAfter(scolon.getEnd())) {\r\n startDelete = t.getStart();\r\n break;\r\n }\r\n }\r\n const colon = statement.getColon();\r\n if (statement.getLastToken().getStr() === \".\" && previousStatement) {\r\n // last statement in chain\r\n const edit1 = EditHelper.replaceToken(file, previousStatement.getLastToken(), \".\");\r\n const edit2 = EditHelper.deleteRange(file, previousStatement.getLastToken().getEnd(), statement.getLastToken().getEnd());\r\n return EditHelper.merge(edit1, edit2);\r\n }\r\n else if (previousStatement === undefined && colon && nextStatement) {\r\n // first statement in chain\r\n return EditHelper.deleteRange(file, this.firstAfterColon(statement), this.firstAfterColon(nextStatement));\r\n }\r\n else {\r\n // middle statement\r\n return EditHelper.deleteRange(file, startDelete, this.firstAfterColon(nextStatement));\r\n }\r\n }\r\n static firstAfterColon(statement) {\r\n const colon = statement.getColon().getStart();\r\n for (const t of statement.getTokens()) {\r\n if (t.getStart().isAfter(colon)) {\r\n return t.getStart();\r\n }\r\n }\r\n throw new Error(\"firstAfterColon, emtpy statement?\");\r\n }\r\n static deleteToken(file, token) {\r\n const filename = file.getFilename();\r\n const range = { start: token.getStart(), end: token.getEnd() };\r\n return { [filename]: [{ range, newText: \"\" }] };\r\n }\r\n static deleteRange(file, start, end) {\r\n const filename = file.getFilename();\r\n const range = { start, end };\r\n return { [filename]: [{ range, newText: \"\" }] };\r\n }\r\n static insertAt(file, pos, text) {\r\n const filename = file.getFilename();\r\n const range = { start: pos, end: pos };\r\n return { [filename]: [{ range, newText: text }] };\r\n }\r\n static replaceToken(file, token, text) {\r\n return this.replaceRange(file, token.getStart(), token.getEnd(), text);\r\n }\r\n static replaceRange(file, start, end, text) {\r\n const filename = file.getFilename();\r\n const range = { start, end };\r\n return { [filename]: [{ range, newText: text }] };\r\n }\r\n}\r\nexports.EditHelper = EditHelper;\r\nfunction applyEditSingle(reg, edit) {\r\n var _a;\r\n for (const filename in edit) {\r\n let rows = (_a = reg.getFileByName(filename)) === null || _a === void 0 ? void 0 : _a.getRawRows();\r\n if (rows === undefined) {\r\n throw new Error(\"applyEdit, file not found\");\r\n }\r\n for (const e of edit[filename]) {\r\n if (e.range.start.getRow() === e.range.end.getRow()) {\r\n const line = rows[e.range.start.getRow() - 1];\r\n rows[e.range.start.getRow() - 1] =\r\n line.substr(0, e.range.start.getCol() - 1) +\r\n e.newText +\r\n line.substr(e.range.end.getCol() - 1);\r\n }\r\n else {\r\n const first = rows[e.range.start.getRow() - 1];\r\n let res = first.substr(0, e.range.start.getCol() - 1) + e.newText;\r\n const last = rows[e.range.end.getRow() - 1];\r\n res = res + last.substr(e.range.end.getCol() - 1);\r\n // delete middle lines\r\n rows.splice(e.range.start.getRow(), e.range.end.getRow() - e.range.start.getRow());\r\n // clean up\r\n rows[e.range.start.getRow() - 1] = res;\r\n rows = rows.join(\"\\n\").split(\"\\n\"); // if the edit contained newlines and multiple edits\r\n }\r\n }\r\n const result = new memory_file_1.MemoryFile(filename, rows.join(\"\\n\"));\r\n reg.updateFile(result);\r\n }\r\n}\r\nexports.applyEditSingle = applyEditSingle;\r\n/** returns list of filenames which were changed */\r\nfunction applyEditList(reg, edits) {\r\n const ret = [];\r\n let length = 0;\r\n const merged = {};\r\n for (const e of edits) {\r\n for (const f in e) {\r\n if (merged[f] === undefined) {\r\n merged[f] = [];\r\n length = length + 1;\r\n }\r\n merged[f] = merged[f].concat(e[f]);\r\n }\r\n }\r\n for (const f in merged) {\r\n const singleFile = {};\r\n // sort, start with the last position first\r\n singleFile[f] = merged[f].sort((a, b) => {\r\n let val = b.range.start.getRow() - a.range.start.getRow();\r\n if (val === 0) {\r\n val = b.range.start.getCol() - a.range.start.getCol();\r\n }\r\n return val;\r\n });\r\n applyEditSingle(reg, singleFile);\r\n ret.push(f);\r\n }\r\n return ret;\r\n}\r\nexports.applyEditList = applyEditList;\r\n//# sourceMappingURL=edit_helper.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/edit_helper.js?");
|
|
9150
9150
|
|
|
9151
9151
|
/***/ }),
|
|
9152
9152
|
|
|
@@ -9223,7 +9223,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
|
|
|
9223
9223
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
9224
9224
|
|
|
9225
9225
|
"use strict";
|
|
9226
|
-
eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.LSPLookup = void 0;\r\nconst LServer = __webpack_require__(/*! vscode-languageserver-types */ \"./node_modules/vscode-languageserver-types/lib/esm/main.js\");\r\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\r\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\r\nconst syntax_1 = __webpack_require__(/*! ../abap/5_syntax/syntax */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js\");\r\nconst _lsp_utils_1 = __webpack_require__(/*! ./_lsp_utils */ \"./node_modules/@abaplint/core/build/src/lsp/_lsp_utils.js\");\r\nconst _typed_identifier_1 = __webpack_require__(/*! ../abap/types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\r\nconst _reference_1 = __webpack_require__(/*! ../abap/5_syntax/_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\r\nconst _builtin_1 = __webpack_require__(/*! ../abap/5_syntax/_builtin */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_builtin.js\");\r\nconst _scope_type_1 = __webpack_require__(/*! ../abap/5_syntax/_scope_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js\");\r\nclass LSPLookup {\r\n static lookup(cursor, reg, obj) {\r\n const inc = this.findInclude(cursor, reg);\r\n if (inc) {\r\n const found = this.ABAPFileResult(inc);\r\n return { hover: \"Include\", definition: found, implementation: found };\r\n }\r\n const fm = this.findFunctionModule(cursor);\r\n if (fm) {\r\n return { hover: \"Function Module \" + fm };\r\n }\r\n const bottomScope = new syntax_1.SyntaxLogic(reg, obj).run().spaghetti.lookupPosition(cursor.identifier.getStart(), cursor.identifier.getFilename());\r\n if (bottomScope === undefined) {\r\n return undefined;\r\n }\r\n const clas = bottomScope.findClassDefinition(cursor.token.getStr());\r\n if (clas && clas.getStart().equals(cursor.token.getStart())) {\r\n const found = _lsp_utils_1.LSPUtils.identiferToLocation(clas);\r\n return { hover: \"Class definition, \" + cursor.token.getStr(),\r\n definition: found,\r\n definitionId: clas,\r\n implementation: undefined,\r\n scope: bottomScope };\r\n }\r\n const intf = bottomScope.findInterfaceDefinition(cursor.token.getStr());\r\n if (intf && intf.getStart().equals(cursor.token.getStart())) {\r\n const found = _lsp_utils_1.LSPUtils.identiferToLocation(intf);\r\n return { hover: \"Interface definition, \" + cursor.token.getStr(),\r\n definition: found,\r\n definitionId: intf,\r\n implementation: undefined,\r\n scope: bottomScope };\r\n }\r\n const type = bottomScope.findType(cursor.token.getStr());\r\n if (type !== undefined && type.getStart().equals(cursor.token.getStart())) {\r\n const found = _lsp_utils_1.LSPUtils.identiferToLocation(type);\r\n const hover = \"Type definition, \" + cursor.token.getStr() + \"\\n\\n\" + this.dumpType(type);\r\n return { hover, definition: found, definitionId: type, scope: bottomScope };\r\n }\r\n const method = this.findMethodDefinition(cursor, bottomScope);\r\n if (method !== undefined && method.getStart().equals(cursor.token.getStart())) {\r\n const found = _lsp_utils_1.LSPUtils.identiferToLocation(method);\r\n const hover = \"Method definition \\\"\" + method.getName() + \"\\\"\";\r\n return { hover, definition: found, definitionId: method, scope: bottomScope };\r\n }\r\n const variable = bottomScope.findVariable(cursor.token.getStr());\r\n if (variable !== undefined && variable.getStart().equals(cursor.token.getStart())) {\r\n const hover = \"Variable definition\\n\\n\" + this.dumpType(variable);\r\n let location = undefined;\r\n if (variable.getMeta().includes(\"built-in\" /* BuiltIn */) === false) {\r\n location = _lsp_utils_1.LSPUtils.identiferToLocation(variable);\r\n }\r\n return { hover, definition: location, implementation: location, definitionId: variable, scope: bottomScope };\r\n }\r\n let hoverValue = \"\";\r\n const ddicRefs = reg.getDDICReferences().listByFilename(cursor.identifier.getFilename(), cursor.identifier.getStart().getRow());\r\n for (const d of ddicRefs) {\r\n if (d.object && d.token && d.token.getStart().equals(cursor.identifier.getStart())) {\r\n hoverValue += `DDIC: ${d.object.getType()} ${d.object.getName()}`;\r\n }\r\n }\r\n const refs = this.searchReferences(bottomScope, cursor.token);\r\n if (refs.length > 0) {\r\n for (const ref of refs) {\r\n if (hoverValue !== \"\") {\r\n hoverValue += \"\\n_________________\\n\";\r\n }\r\n hoverValue += this.referenceHover(ref, bottomScope, reg);\r\n }\r\n let definition = undefined;\r\n if (refs[0].resolved) {\r\n definition = _lsp_utils_1.LSPUtils.identiferToLocation(refs[0].resolved);\r\n if (definition.uri === _builtin_1.BuiltIn.filename) {\r\n definition = undefined;\r\n }\r\n }\r\n return { hover: hoverValue, definition, definitionId: refs[0].resolved, scope: bottomScope };\r\n }\r\n if (hoverValue !== \"\") {\r\n return { hover: hoverValue, scope: bottomScope };\r\n }\r\n return undefined;\r\n }\r\n ////////////////////////////////////////////\r\n static dumpType(variable) {\r\n let value = variable.toText() + \"\\n\\nType: \" + variable.getType().toText(0);\r\n if (variable.getValue()) {\r\n value = value + \"\\n\\nValue: ```\" + variable.getValue() + \"```\";\r\n }\r\n if (variable.getMeta().length > 0) {\r\n value = value + \"\\n\\nMeta: \" + variable.getMeta().join(\", \");\r\n }\r\n if (variable.getType().containsVoid() === true) {\r\n value = value + \"\\n\\nContains void types\";\r\n }\r\n if (variable.getType().getQualifiedName()) {\r\n value = value + \"\\n\\nQualified type name: ```\" + variable.getType().getQualifiedName() + \"```\";\r\n }\r\n if (variable.getType().isGeneric() === true) {\r\n value = value + \"\\n\\nIs generic type\";\r\n }\r\n return value;\r\n }\r\n static referenceHover(ref, scope, reg) {\r\n var _a, _b, _c;\r\n let name = \"\";\r\n if (ref.resolved) {\r\n name = \"```\" + ref.resolved.getName() + \"```\";\r\n }\r\n let ret = \"Resolved Reference: \" + ref.referenceType + \" \" + name;\r\n if (ref.referenceType === _reference_1.ReferenceType.MethodReference && ((_a = ref.extra) === null || _a === void 0 ? void 0 : _a.ooName)) {\r\n let cdef = scope.findClassDefinition(ref.extra.ooName);\r\n if (cdef === undefined) {\r\n cdef = scope.findInterfaceDefinition(ref.extra.ooName);\r\n }\r\n if (cdef === undefined) {\r\n cdef = (_b = reg.getObject(\"CLAS\", ref.extra.ooName)) === null || _b === void 0 ? void 0 : _b.getDefinition();\r\n }\r\n if (cdef === undefined) {\r\n cdef = (_c = reg.getObject(\"INTF\", ref.extra.ooName)) === null || _c === void 0 ? void 0 : _c.getDefinition();\r\n }\r\n ret += \"\\n\\n\" + this.hoverMethod(ref.position.getName(), cdef);\r\n }\r\n else if (ref.resolved instanceof _typed_identifier_1.TypedIdentifier) {\r\n ret += \"\\n\\n\" + this.dumpType(ref.resolved);\r\n }\r\n if (ref.extra !== undefined && Object.keys(ref.extra).length > 0) {\r\n ret += \"\\n\\nExtra: \" + JSON.stringify(ref.extra);\r\n }\r\n return ret;\r\n }\r\n static hoverMethod(method, def) {\r\n if (def === undefined) {\r\n return \"class not found\";\r\n }\r\n const mdef = def.getMethodDefinitions().getByName(method);\r\n if (mdef === undefined) {\r\n return \"method not found in definition\";\r\n }\r\n let ret = \"\";\r\n if (mdef.getParameters().getImporting().length > 0) {\r\n ret += \"IMPORTING\\n\";\r\n for (const p of mdef.getParameters().getImporting()) {\r\n ret += this.singleParameter(p);\r\n }\r\n }\r\n if (mdef.getParameters().getExporting().length > 0) {\r\n ret += \"EXPORTING\\n\";\r\n for (const p of mdef.getParameters().getExporting()) {\r\n ret += this.singleParameter(p);\r\n }\r\n }\r\n if (mdef.getParameters().getChanging().length > 0) {\r\n ret += \"CHANGING\\n\";\r\n for (const p of mdef.getParameters().getChanging()) {\r\n ret += this.singleParameter(p);\r\n }\r\n }\r\n const r = mdef.getParameters().getReturning();\r\n if (r) {\r\n ret += \"RETURNING\\n\" + this.singleParameter(r);\r\n }\r\n if (mdef.getRaising().length > 0) {\r\n ret += \"RAISING\\n\";\r\n for (const p of mdef.getRaising()) {\r\n ret += \"* \" + p + \"\\n\";\r\n }\r\n }\r\n return ret;\r\n }\r\n static singleParameter(p) {\r\n let extra = p.getMeta().join(\", \");\r\n if (extra !== \"\") {\r\n extra = \"(Meta: \" + extra + \")\";\r\n }\r\n return \"* \" + p.getName() + extra + \" TYPE \" + p.getType().toText(1) + \"\\n\\n\";\r\n }\r\n static searchReferences(scope, token) {\r\n const ret = [];\r\n for (const r of scope.getData().references) {\r\n if (r.position.getStart().equals(token.getStart())) {\r\n ret.push(r);\r\n }\r\n }\r\n const parent = scope.getParent();\r\n if (parent) {\r\n ret.push(...this.searchReferences(parent, token));\r\n }\r\n return ret;\r\n }\r\n static ABAPFileResult(abap) {\r\n return {\r\n uri: abap.getFilename(),\r\n range: LServer.Range.create(0, 0, 0, 0),\r\n };\r\n }\r\n static findMethodDefinition(found, scope) {\r\n var _a, _b, _c, _d;\r\n if (scope.getIdentifier().stype !== _scope_type_1.ScopeType.ClassDefinition\r\n || !(found.snode.get() instanceof Statements.MethodDef)) {\r\n return undefined;\r\n }\r\n const nameToken = (_a = found.snode.findFirstExpression(Expressions.MethodName)) === null || _a === void 0 ? void 0 : _a.getFirstToken();\r\n if (nameToken === undefined) {\r\n return undefined;\r\n }\r\n if (found.snode.findFirstExpression(Expressions.Redefinition)) {\r\n return undefined;\r\n }\r\n // check the cursor is at the right token\r\n if (nameToken.getStart().getCol() !== found.token.getStart().getCol()\r\n || nameToken.getStart().getRow() !== found.token.getStart().getRow()) {\r\n return undefined;\r\n }\r\n const def = (_d = (_c = (_b = scope.getParent()) === null || _b === void 0 ? void 0 : _b.findClassDefinition(scope.getIdentifier().sname)) === null || _c === void 0 ? void 0 : _c.getMethodDefinitions()) === null || _d === void 0 ? void 0 : _d.getByName(nameToken.getStr());\r\n return def;\r\n }\r\n static findFunctionModule(found) {\r\n if (!(found.snode.get() instanceof Statements.CallFunction)) {\r\n return undefined;\r\n }\r\n const name = found.snode.findFirstExpression(Expressions.FunctionName);\r\n if (name === undefined) {\r\n return undefined;\r\n }\r\n // check the cursor is at the right token\r\n const token = name.getFirstToken();\r\n if (token.getStart().getCol() !== found.token.getStart().getCol()\r\n || token.getStart().getRow() !== found.token.getStart().getRow()) {\r\n return undefined;\r\n }\r\n return token.getStr();\r\n }\r\n static findInclude(found, reg) {\r\n if (!(found.snode.get() instanceof Statements.Include)) {\r\n return;\r\n }\r\n const name = found.snode.findFirstExpression(Expressions.IncludeName);\r\n if (name === undefined) {\r\n return undefined;\r\n }\r\n // check the cursor is at the right token\r\n const token = name.getFirstToken();\r\n if (token.getStart().getCol() !== found.token.getStart().getCol()\r\n || token.getStart().getRow() !== found.token.getStart().getRow()) {\r\n return undefined;\r\n }\r\n const obj = reg.getObject(\"PROG\", token.getStr());\r\n if (obj) {\r\n return obj.getABAPFiles()[0];\r\n }\r\n return undefined;\r\n }\r\n}\r\nexports.LSPLookup = LSPLookup;\r\n//# sourceMappingURL=_lookup.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/lsp/_lookup.js?");
|
|
9226
|
+
eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.LSPLookup = void 0;\r\nconst LServer = __webpack_require__(/*! vscode-languageserver-types */ \"./node_modules/vscode-languageserver-types/lib/esm/main.js\");\r\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\r\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\r\nconst syntax_1 = __webpack_require__(/*! ../abap/5_syntax/syntax */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js\");\r\nconst _lsp_utils_1 = __webpack_require__(/*! ./_lsp_utils */ \"./node_modules/@abaplint/core/build/src/lsp/_lsp_utils.js\");\r\nconst _typed_identifier_1 = __webpack_require__(/*! ../abap/types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\r\nconst _reference_1 = __webpack_require__(/*! ../abap/5_syntax/_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\r\nconst _builtin_1 = __webpack_require__(/*! ../abap/5_syntax/_builtin */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_builtin.js\");\r\nconst _scope_type_1 = __webpack_require__(/*! ../abap/5_syntax/_scope_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js\");\r\nclass LSPLookup {\r\n static lookup(cursor, reg, obj) {\r\n const inc = this.findInclude(cursor, reg);\r\n if (inc) {\r\n const found = this.ABAPFileResult(inc);\r\n return { hover: \"Include\", definition: found, implementation: found };\r\n }\r\n const fm = this.findFunctionModule(cursor);\r\n if (fm) {\r\n return { hover: \"Function Module \" + fm };\r\n }\r\n const bottomScope = new syntax_1.SyntaxLogic(reg, obj).run().spaghetti.lookupPosition(cursor.identifier.getStart(), cursor.identifier.getFilename());\r\n if (bottomScope === undefined) {\r\n return undefined;\r\n }\r\n const clas = bottomScope.findClassDefinition(cursor.token.getStr());\r\n if (clas && clas.getStart().equals(cursor.token.getStart())) {\r\n const found = _lsp_utils_1.LSPUtils.identiferToLocation(clas);\r\n return {\r\n hover: \"Class Definition, \" + cursor.token.getStr(),\r\n definition: found,\r\n definitionId: clas,\r\n implementation: undefined,\r\n scope: bottomScope,\r\n };\r\n }\r\n const intf = bottomScope.findInterfaceDefinition(cursor.token.getStr());\r\n if (intf && intf.getStart().equals(cursor.token.getStart())) {\r\n const found = _lsp_utils_1.LSPUtils.identiferToLocation(intf);\r\n return {\r\n hover: \"Interface Definition, \" + cursor.token.getStr(),\r\n definition: found,\r\n definitionId: intf,\r\n implementation: undefined,\r\n scope: bottomScope,\r\n };\r\n }\r\n const type = bottomScope.findType(cursor.token.getStr());\r\n if (type !== undefined && type.getStart().equals(cursor.token.getStart())) {\r\n const found = _lsp_utils_1.LSPUtils.identiferToLocation(type);\r\n const hover = \"Type Definition, \" + cursor.token.getStr() + \"\\n\\n\" + this.dumpType(type);\r\n return { hover, definition: found, definitionId: type, scope: bottomScope };\r\n }\r\n const method = this.findMethodDefinition(cursor, bottomScope);\r\n if (method !== undefined && method.getStart().equals(cursor.token.getStart())) {\r\n const found = _lsp_utils_1.LSPUtils.identiferToLocation(method);\r\n const hover = \"Method Definition \\\"\" + method.getName() + \"\\\"\";\r\n return { hover, definition: found, definitionId: method, scope: bottomScope };\r\n }\r\n const variable = bottomScope.findVariable(cursor.token.getStr());\r\n if (variable !== undefined && variable.getStart().equals(cursor.token.getStart())) {\r\n const hover = \"Variable Definition\\n\\n\" + this.dumpType(variable);\r\n let location = undefined;\r\n if (variable.getMeta().includes(\"built-in\" /* BuiltIn */) === false) {\r\n location = _lsp_utils_1.LSPUtils.identiferToLocation(variable);\r\n }\r\n return { hover, definition: location, implementation: location, definitionId: variable, scope: bottomScope };\r\n }\r\n let hoverValue = \"\";\r\n const ddicRefs = reg.getDDICReferences().listByFilename(cursor.identifier.getFilename(), cursor.identifier.getStart().getRow());\r\n for (const d of ddicRefs) {\r\n if (d.object && d.token && d.token.getStart().equals(cursor.identifier.getStart())) {\r\n hoverValue += `DDIC: ${d.object.getType()} ${d.object.getName()}`;\r\n }\r\n }\r\n const refs = this.searchReferences(bottomScope, cursor.token);\r\n if (refs.length > 0) {\r\n for (const ref of refs) {\r\n if (hoverValue !== \"\") {\r\n hoverValue += \"\\n_________________\\n\";\r\n }\r\n hoverValue += this.referenceHover(ref, bottomScope, reg);\r\n }\r\n let definition = undefined;\r\n if (refs[0].resolved) {\r\n definition = _lsp_utils_1.LSPUtils.identiferToLocation(refs[0].resolved);\r\n if (definition.uri === _builtin_1.BuiltIn.filename) {\r\n definition = undefined;\r\n }\r\n }\r\n return { hover: hoverValue, definition, definitionId: refs[0].resolved, scope: bottomScope };\r\n }\r\n if (hoverValue !== \"\") {\r\n return { hover: hoverValue, scope: bottomScope };\r\n }\r\n return undefined;\r\n }\r\n ////////////////////////////////////////////\r\n static dumpType(variable) {\r\n let value = variable.toText() + \"\\n\\nType: \" + variable.getType().toText(0);\r\n if (variable.getValue()) {\r\n value = value + \"\\n\\nValue: ```\" + variable.getValue() + \"```\";\r\n }\r\n if (variable.getMeta().length > 0) {\r\n value = value + \"\\n\\nMeta: \" + variable.getMeta().join(\", \");\r\n }\r\n if (variable.getType().containsVoid() === true) {\r\n value = value + \"\\n\\nContains Void types\";\r\n }\r\n if (variable.getType().getQualifiedName()) {\r\n value = value + \"\\n\\nQualified Type Name: ```\" + variable.getType().getQualifiedName() + \"```\";\r\n }\r\n if (variable.getType().isGeneric() === true) {\r\n value = value + \"\\n\\nIs Generic Type\";\r\n }\r\n return value;\r\n }\r\n static referenceHover(ref, scope, reg) {\r\n var _a, _b, _c, _d, _e;\r\n let name = \"\";\r\n if (ref.resolved) {\r\n name = \"```\" + ref.resolved.getName() + \"```\";\r\n }\r\n let ret = `${ref.referenceType} ${name}`;\r\n if (ref.referenceType === _reference_1.ReferenceType.MethodReference && ((_a = ref.extra) === null || _a === void 0 ? void 0 : _a.ooName)) {\r\n let cdef = scope.findClassDefinition(ref.extra.ooName);\r\n if (cdef === undefined) {\r\n cdef = scope.findInterfaceDefinition(ref.extra.ooName);\r\n }\r\n if (cdef === undefined) {\r\n cdef = (_b = reg.getObject(\"CLAS\", ref.extra.ooName)) === null || _b === void 0 ? void 0 : _b.getDefinition();\r\n }\r\n if (cdef === undefined) {\r\n cdef = (_c = reg.getObject(\"INTF\", ref.extra.ooName)) === null || _c === void 0 ? void 0 : _c.getDefinition();\r\n }\r\n ret += \"\\n\\n\" + this.hoverMethod(ref.position.getName(), cdef);\r\n }\r\n else if (ref.resolved instanceof _typed_identifier_1.TypedIdentifier) {\r\n ret += \"\\n\\n\" + this.dumpType(ref.resolved);\r\n }\r\n else if (ref.referenceType === _reference_1.ReferenceType.BuiltinMethodReference) {\r\n const builtinDef = new _builtin_1.BuiltIn().searchBuiltin((_e = (_d = ref.resolved) === null || _d === void 0 ? void 0 : _d.getName()) === null || _e === void 0 ? void 0 : _e.toUpperCase());\r\n if (builtinDef === undefined) {\r\n return \"Error: builtin method signature not found\";\r\n }\r\n ret += \"\\n\\n\" + this.methodParameters(builtinDef);\r\n }\r\n if (ref.resolved) {\r\n ret += \"\\n\\n(Resolved)\";\r\n }\r\n if (ref.extra !== undefined && Object.keys(ref.extra).length > 0) {\r\n ret += \"\\n\\nExtra: \" + JSON.stringify(ref.extra);\r\n }\r\n return ret;\r\n }\r\n static hoverMethod(method, classDef) {\r\n if (classDef === undefined) {\r\n return \"class not found\";\r\n }\r\n const methodDef = classDef.getMethodDefinitions().getByName(method);\r\n if (methodDef === undefined) {\r\n return \"method not found in definition\";\r\n }\r\n return this.methodParameters(methodDef);\r\n }\r\n static methodParameters(methodDef) {\r\n let ret = \"\";\r\n const parameters = methodDef.getParameters();\r\n const importing = parameters.getImporting();\r\n if (importing.length > 0) {\r\n ret += \"IMPORTING\\n\";\r\n for (const p of importing) {\r\n ret += this.singleParameter(p);\r\n }\r\n }\r\n const exporting = parameters.getExporting();\r\n if (exporting.length > 0) {\r\n ret += \"EXPORTING\\n\";\r\n for (const p of exporting) {\r\n ret += this.singleParameter(p);\r\n }\r\n }\r\n const changing = parameters.getChanging();\r\n if (changing.length > 0) {\r\n ret += \"CHANGING\\n\";\r\n for (const p of changing) {\r\n ret += this.singleParameter(p);\r\n }\r\n }\r\n const r = parameters.getReturning();\r\n if (r) {\r\n ret += \"RETURNING\\n\" + this.singleParameter(r);\r\n }\r\n if (methodDef.getRaising().length > 0) {\r\n ret += \"RAISING\\n\";\r\n for (const p of methodDef.getRaising()) {\r\n ret += \"* \" + p + \"\\n\";\r\n }\r\n }\r\n return ret;\r\n }\r\n static singleParameter(p) {\r\n let extra = p.getMeta().join(\", \");\r\n if (extra !== \"\") {\r\n extra = \"(Meta: \" + extra + \")\";\r\n }\r\n return \"* \" + p.getName() + extra + \" TYPE \" + p.getType().toText(1) + \"\\n\\n\";\r\n }\r\n static searchReferences(scope, token) {\r\n const ret = [];\r\n for (const r of scope.getData().references) {\r\n if (r.position.getStart().equals(token.getStart())) {\r\n ret.push(r);\r\n }\r\n }\r\n const parent = scope.getParent();\r\n if (parent) {\r\n ret.push(...this.searchReferences(parent, token));\r\n }\r\n return ret;\r\n }\r\n static ABAPFileResult(abap) {\r\n return {\r\n uri: abap.getFilename(),\r\n range: LServer.Range.create(0, 0, 0, 0),\r\n };\r\n }\r\n static findMethodDefinition(found, scope) {\r\n var _a, _b, _c, _d;\r\n if (scope.getIdentifier().stype !== _scope_type_1.ScopeType.ClassDefinition\r\n || !(found.snode.get() instanceof Statements.MethodDef)) {\r\n return undefined;\r\n }\r\n const nameToken = (_a = found.snode.findFirstExpression(Expressions.MethodName)) === null || _a === void 0 ? void 0 : _a.getFirstToken();\r\n if (nameToken === undefined) {\r\n return undefined;\r\n }\r\n if (found.snode.findFirstExpression(Expressions.Redefinition)) {\r\n return undefined;\r\n }\r\n // check the cursor is at the right token\r\n if (nameToken.getStart().getCol() !== found.token.getStart().getCol()\r\n || nameToken.getStart().getRow() !== found.token.getStart().getRow()) {\r\n return undefined;\r\n }\r\n const def = (_d = (_c = (_b = scope.getParent()) === null || _b === void 0 ? void 0 : _b.findClassDefinition(scope.getIdentifier().sname)) === null || _c === void 0 ? void 0 : _c.getMethodDefinitions()) === null || _d === void 0 ? void 0 : _d.getByName(nameToken.getStr());\r\n return def;\r\n }\r\n static findFunctionModule(found) {\r\n if (!(found.snode.get() instanceof Statements.CallFunction)) {\r\n return undefined;\r\n }\r\n const name = found.snode.findFirstExpression(Expressions.FunctionName);\r\n if (name === undefined) {\r\n return undefined;\r\n }\r\n // check the cursor is at the right token\r\n const token = name.getFirstToken();\r\n if (token.getStart().getCol() !== found.token.getStart().getCol()\r\n || token.getStart().getRow() !== found.token.getStart().getRow()) {\r\n return undefined;\r\n }\r\n return token.getStr();\r\n }\r\n static findInclude(found, reg) {\r\n if (!(found.snode.get() instanceof Statements.Include)) {\r\n return;\r\n }\r\n const name = found.snode.findFirstExpression(Expressions.IncludeName);\r\n if (name === undefined) {\r\n return undefined;\r\n }\r\n // check the cursor is at the right token\r\n const token = name.getFirstToken();\r\n if (token.getStart().getCol() !== found.token.getStart().getCol()\r\n || token.getStart().getRow() !== found.token.getStart().getRow()) {\r\n return undefined;\r\n }\r\n const obj = reg.getObject(\"PROG\", token.getStr());\r\n if (obj) {\r\n return obj.getABAPFiles()[0];\r\n }\r\n return undefined;\r\n }\r\n}\r\nexports.LSPLookup = LSPLookup;\r\n//# sourceMappingURL=_lookup.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/lsp/_lookup.js?");
|
|
9227
9227
|
|
|
9228
9228
|
/***/ }),
|
|
9229
9229
|
|
|
@@ -10708,7 +10708,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
|
|
|
10708
10708
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
10709
10709
|
|
|
10710
10710
|
"use strict";
|
|
10711
|
-
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Registry = void 0;\nconst config_1 = __webpack_require__(/*! ./config */ \"./node_modules/@abaplint/core/build/src/config.js\");\nconst artifacts_objects_1 = __webpack_require__(/*! ./artifacts_objects */ \"./node_modules/@abaplint/core/build/src/artifacts_objects.js\");\nconst artifacts_rules_1 = __webpack_require__(/*! ./artifacts_rules */ \"./node_modules/@abaplint/core/build/src/artifacts_rules.js\");\nconst skip_logic_1 = __webpack_require__(/*! ./skip_logic */ \"./node_modules/@abaplint/core/build/src/skip_logic.js\");\nconst _abap_object_1 = __webpack_require__(/*! ./objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nconst find_global_definitions_1 = __webpack_require__(/*! ./abap/5_syntax/global_definitions/find_global_definitions */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/global_definitions/find_global_definitions.js\");\nconst syntax_1 = __webpack_require__(/*! ./abap/5_syntax/syntax */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js\");\nconst excludeHelper_1 = __webpack_require__(/*! ./utils/excludeHelper */ \"./node_modules/@abaplint/core/build/src/utils/excludeHelper.js\");\nconst ddic_references_1 = __webpack_require__(/*! ./ddic_references */ \"./node_modules/@abaplint/core/build/src/ddic_references.js\");\n// todo, this should really be an instance in case there are multiple Registry'ies\nclass ParsingPerformance {\n static clear() {\n this.results = [];\n this.lexing = 0;\n this.statements = 0;\n this.structure = 0;\n }\n static push(obj, result) {\n if (result.runtimeExtra) {\n this.lexing += result.runtimeExtra.lexing;\n this.statements += result.runtimeExtra.statements;\n this.structure += result.runtimeExtra.structure;\n }\n if (result.runtime < 100) {\n return;\n }\n if (this.results === undefined) {\n this.results = [];\n }\n let extra = \"\";\n if (result.runtimeExtra) {\n extra = `\\t(lexing: ${result.runtimeExtra.lexing}ms, statements: ${result.runtimeExtra.statements}ms, structure: ${result.runtimeExtra.structure}ms)`;\n }\n this.results.push({\n runtime: result.runtime,\n extra,\n name: obj.getType() + \" \" + obj.getName(),\n });\n }\n static output() {\n const MAX = 10;\n this.results.sort((a, b) => { return b.runtime - a.runtime; });\n for (let i = 0; i < MAX; i++) {\n const row = this.results[i];\n if (row === undefined) {\n break;\n }\n process.stderr.write(`\\t${row.runtime}ms\\t${row.name} ${row.extra}\\n`);\n }\n process.stderr.write(`\\tTotal lexing: ${this.lexing}ms\\n`);\n process.stderr.write(`\\tTotal statements: ${this.statements}ms\\n`);\n process.stderr.write(`\\tTotal structure: ${this.structure}ms\\n`);\n }\n}\n///////////////////////////////////////////////////////////////////////////////////////////////\nclass Registry {\n constructor(conf) {\n this.objects = {};\n this.objectsByType = {};\n /** object containing filenames of dependencies */\n this.dependencies = {};\n this.issues = [];\n this.conf = conf ? conf : config_1.Config.getDefault();\n this.references = new ddic_references_1.DDICReferences();\n }\n static abaplintVersion() {\n // magic, see build script \"version.sh\"\n return \"2.81.1\";\n }\n getDDICReferences() {\n return this.references;\n }\n *getObjects() {\n for (const name in this.objects) {\n for (const type in this.objects[name]) {\n yield this.objects[name][type];\n }\n }\n }\n *getObjectsByType(type) {\n for (const name in this.objectsByType[type] || []) {\n yield this.objectsByType[type][name];\n }\n }\n *getFiles() {\n for (const obj of this.getObjects()) {\n for (const file of obj.getFiles()) {\n yield file;\n }\n }\n }\n getFirstObject() {\n for (const name in this.objects) {\n for (const type in this.objects[name]) {\n return this.objects[name][type];\n }\n }\n return undefined;\n }\n getObjectCount(skipDependencies = true) {\n let res = 0;\n for (const o of this.getObjects()) {\n if (skipDependencies === true && this.isDependency(o)) {\n continue;\n }\n res = res + 1;\n }\n return res;\n }\n getFileByName(filename) {\n const upper = filename.toUpperCase();\n for (const o of this.getObjects()) {\n for (const f of o.getFiles()) {\n if (f.getFilename().toUpperCase() === upper) {\n return f;\n }\n }\n }\n return undefined;\n }\n getObject(type, name) {\n if (type === undefined || name === undefined) {\n return undefined;\n }\n const searchName = name.toUpperCase();\n if (this.objects[searchName]) {\n return this.objects[searchName][type];\n }\n return undefined;\n }\n getConfig() {\n return this.conf;\n }\n // assumption: Config is immutable, and can only be changed via this method\n setConfig(conf) {\n for (const obj of this.getObjects()) {\n obj.setDirty();\n }\n this.conf = conf;\n return this;\n }\n inErrorNamespace(name) {\n const reg = new RegExp(this.getConfig().getSyntaxSetttings().errorNamespace, \"i\");\n return reg.test(name);\n }\n addFile(file) {\n return this.addFiles([file]);\n }\n updateFile(file) {\n const obj = this.find(file.getObjectName(), file.getObjectType());\n obj.updateFile(file);\n return this;\n }\n removeFile(file) {\n const obj = this.find(file.getObjectName(), file.getObjectType());\n obj.removeFile(file);\n if (obj.getFiles().length === 0) {\n this.references.clear(obj);\n this.removeObject(obj);\n }\n return this;\n }\n addFiles(files) {\n var _a;\n const globalExclude = ((_a = this.conf.getGlobal().exclude) !== null && _a !== void 0 ? _a : [])\n .map(pattern => new RegExp(pattern, \"i\"));\n for (const f of files) {\n const filename = f.getFilename();\n const isNotAbapgitFile = filename.split(\".\").length <= 2;\n if (isNotAbapgitFile || excludeHelper_1.ExcludeHelper.isExcluded(filename, globalExclude)) {\n continue;\n }\n const found = this.findOrCreate(f.getObjectName(), f.getObjectType());\n found.addFile(f);\n }\n return this;\n }\n addDependencies(files) {\n for (const f of files) {\n this.dependencies[f.getFilename().toUpperCase()] = true;\n }\n return this.addFiles(files);\n }\n addDependency(file) {\n this.dependencies[file.getFilename().toUpperCase()] = true;\n this.addFile(file);\n return this;\n }\n isDependency(obj) {\n const filename = obj.getFiles()[0].getFilename().toUpperCase();\n return this.dependencies[filename] === true;\n }\n isFileDependency(filename) {\n return this.dependencies[filename.toUpperCase()] === true;\n }\n // assumption: the file is already in the registry\n findObjectForFile(file) {\n const filename = file.getFilename();\n for (const obj of this.getObjects()) {\n for (const ofile of obj.getFiles()) {\n if (ofile.getFilename() === filename) {\n return obj;\n }\n }\n }\n return undefined;\n }\n // todo, this will be changed to async sometime\n findIssues(input) {\n if (this.isDirty() === true) {\n this.parse();\n }\n return this.runRules(input);\n }\n // todo, this will be changed to async sometime\n findIssuesObject(iobj) {\n if (this.isDirty() === true) {\n this.parse();\n }\n return this.runRules(undefined, iobj);\n }\n // todo, this will be changed to async sometime\n parse() {\n if (this.isDirty() === false) {\n return this;\n }\n ParsingPerformance.clear();\n this.issues = [];\n for (const o of this.getObjects()) {\n this.parsePrivate(o);\n this.issues.push(...o.getParsingIssues());\n }\n new find_global_definitions_1.FindGlobalDefinitions(this).run();\n return this;\n }\n async parseAsync(input) {\n var _a, _b;\n if (this.isDirty() === false) {\n return this;\n }\n ParsingPerformance.clear();\n (_a = input === null || input === void 0 ? void 0 : input.progress) === null || _a === void 0 ? void 0 : _a.set(this.getObjectCount(false), \"Lexing and parsing\");\n this.issues = [];\n for (const o of this.getObjects()) {\n await ((_b = input === null || input === void 0 ? void 0 : input.progress) === null || _b === void 0 ? void 0 : _b.tick(\"Lexing and parsing(\" + this.conf.getVersion() + \") - \" + o.getType() + \" \" + o.getName()));\n this.parsePrivate(o);\n this.issues.push(...o.getParsingIssues());\n }\n if ((input === null || input === void 0 ? void 0 : input.outputPerformance) === true) {\n ParsingPerformance.output();\n }\n new find_global_definitions_1.FindGlobalDefinitions(this).run(input === null || input === void 0 ? void 0 : input.progress);\n return this;\n }\n //////////////////////////////////////////\n // todo, refactor, this is a mess, see where-used, a lot of the code should be in this method instead\n parsePrivate(input) {\n const config = this.getConfig();\n const result = input.parse(config.getVersion(), config.getSyntaxSetttings().globalMacros);\n ParsingPerformance.push(input, result);\n }\n isDirty() {\n for (const o of this.getObjects()) {\n const dirty = o.isDirty();\n if (dirty === true) {\n return true;\n }\n }\n return false;\n }\n runRules(input, iobj) {\n var _a, _b, _c, _d, _e, _f;\n const rulePerformance = {};\n const issues = this.issues.slice(0);\n const objects = iobj ? [iobj] : this.getObjects();\n const rules = this.conf.getEnabledRules();\n const skipLogic = new skip_logic_1.SkipLogic(this);\n (_a = input === null || input === void 0 ? void 0 : input.progress) === null || _a === void 0 ? void 0 : _a.set(iobj ? 1 : this.getObjectCount(false), \"Run Syntax\");\n const check = [];\n for (const obj of objects) {\n (_b = input === null || input === void 0 ? void 0 : input.progress) === null || _b === void 0 ? void 0 : _b.tick(\"Run Syntax - \" + obj.getName());\n if (skipLogic.skip(obj) || this.isDependency(obj)) {\n continue;\n }\n if (obj instanceof _abap_object_1.ABAPObject) {\n new syntax_1.SyntaxLogic(this, obj).run();\n }\n check.push(obj);\n }\n (_c = input === null || input === void 0 ? void 0 : input.progress) === null || _c === void 0 ? void 0 : _c.set(rules.length, \"Initialize Rules\");\n for (const rule of rules) {\n (_d = input === null || input === void 0 ? void 0 : input.progress) === null || _d === void 0 ? void 0 : _d.tick(\"Initialize Rules - \" + rule.getMetadata().key);\n if (rule.initialize === undefined) {\n throw new Error(rule.getMetadata().key + \" missing initialize method\");\n }\n rule.initialize(this);\n rulePerformance[rule.getMetadata().key] = 0;\n }\n (_e = input === null || input === void 0 ? void 0 : input.progress) === null || _e === void 0 ? void 0 : _e.set(check.length, \"Finding Issues\");\n for (const obj of check) {\n (_f = input === null || input === void 0 ? void 0 : input.progress) === null || _f === void 0 ? void 0 : _f.tick(\"Finding Issues - \" + obj.getType() + \" \" + obj.getName());\n for (const rule of rules) {\n const before = Date.now();\n issues.push(...rule.run(obj));\n const runtime = Date.now() - before;\n rulePerformance[rule.getMetadata().key] = rulePerformance[rule.getMetadata().key] + runtime;\n }\n }\n if ((input === null || input === void 0 ? void 0 : input.outputPerformance) === true) {\n const perf = [];\n for (const p in rulePerformance) {\n if (rulePerformance[p] > 100) { // ignore rules if it takes less than 100ms\n perf.push({ name: p, time: rulePerformance[p] });\n }\n }\n perf.sort((a, b) => { return b.time - a.time; });\n for (const p of perf) {\n process.stderr.write(\"\\t\" + p.time + \"ms\\t\" + p.name + \"\\n\");\n }\n }\n return this.excludeIssues(issues);\n }\n excludeIssues(issues) {\n var _a;\n const ret = issues;\n // exclude issues, as now we know both the filename and issue key\n for (const rule of artifacts_rules_1.ArtifactsRules.getRules()) {\n const key = rule.getMetadata().key;\n const ruleExclude = ((_a = this.conf.readByKey(key, \"exclude\")) !== null && _a !== void 0 ? _a : []);\n const ruleExcludePatterns = ruleExclude.map(x => new RegExp(x, \"i\"));\n for (let i = ret.length - 1; i >= 0; i--) {\n if (ret[i].getKey() !== key) {\n continue;\n }\n const filename = ret[i].getFilename();\n if (excludeHelper_1.ExcludeHelper.isExcluded(filename, ruleExcludePatterns)) {\n ret.splice(i, 1);\n }\n }\n }\n return ret;\n }\n findOrCreate(name, type) {\n try {\n return this.find(name, type);\n }\n catch (_a) {\n const newName = name.toUpperCase();\n const newType = type ? type : \"UNKNOWN\";\n const add = artifacts_objects_1.ArtifactsObjects.newObject(newName, newType);\n if (this.objects[newName] === undefined) {\n this.objects[newName] = {};\n }\n this.objects[newName][newType] = add;\n if (this.objectsByType[newType] === undefined) {\n this.objectsByType[newType] = {};\n }\n this.objectsByType[newType][newName] = add;\n return add;\n }\n }\n removeObject(remove) {\n if (remove === undefined) {\n return;\n }\n if (this.objects[remove.getName()][remove.getType()] === undefined) {\n throw new Error(\"removeObject: object not found\");\n }\n if (Object.keys(this.objects[remove.getName()]).length === 1) {\n delete this.objects[remove.getName()];\n }\n else {\n delete this.objects[remove.getName()][remove.getType()];\n }\n if (Object.keys(this.objectsByType[remove.getType()]).length === 1) {\n delete this.objectsByType[remove.getType()];\n }\n else {\n delete this.objectsByType[remove.getType()][remove.getName()];\n }\n }\n find(name, type) {\n const searchType = type ? type : \"UNKNOWN\";\n const searchName = name.toUpperCase();\n if (this.objects[searchName] !== undefined\n && this.objects[searchName][searchType]) {\n return this.objects[searchName][searchType];\n }\n throw new Error(\"find: object not found, \" + type + \" \" + name);\n }\n}\nexports.Registry = Registry;\n//# sourceMappingURL=registry.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/registry.js?");
|
|
10711
|
+
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Registry = void 0;\nconst config_1 = __webpack_require__(/*! ./config */ \"./node_modules/@abaplint/core/build/src/config.js\");\nconst artifacts_objects_1 = __webpack_require__(/*! ./artifacts_objects */ \"./node_modules/@abaplint/core/build/src/artifacts_objects.js\");\nconst artifacts_rules_1 = __webpack_require__(/*! ./artifacts_rules */ \"./node_modules/@abaplint/core/build/src/artifacts_rules.js\");\nconst skip_logic_1 = __webpack_require__(/*! ./skip_logic */ \"./node_modules/@abaplint/core/build/src/skip_logic.js\");\nconst _abap_object_1 = __webpack_require__(/*! ./objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nconst find_global_definitions_1 = __webpack_require__(/*! ./abap/5_syntax/global_definitions/find_global_definitions */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/global_definitions/find_global_definitions.js\");\nconst syntax_1 = __webpack_require__(/*! ./abap/5_syntax/syntax */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js\");\nconst excludeHelper_1 = __webpack_require__(/*! ./utils/excludeHelper */ \"./node_modules/@abaplint/core/build/src/utils/excludeHelper.js\");\nconst ddic_references_1 = __webpack_require__(/*! ./ddic_references */ \"./node_modules/@abaplint/core/build/src/ddic_references.js\");\n// todo, this should really be an instance in case there are multiple Registry'ies\nclass ParsingPerformance {\n static clear() {\n this.results = [];\n this.lexing = 0;\n this.statements = 0;\n this.structure = 0;\n }\n static push(obj, result) {\n if (result.runtimeExtra) {\n this.lexing += result.runtimeExtra.lexing;\n this.statements += result.runtimeExtra.statements;\n this.structure += result.runtimeExtra.structure;\n }\n if (result.runtime < 100) {\n return;\n }\n if (this.results === undefined) {\n this.results = [];\n }\n let extra = \"\";\n if (result.runtimeExtra) {\n extra = `\\t(lexing: ${result.runtimeExtra.lexing}ms, statements: ${result.runtimeExtra.statements}ms, structure: ${result.runtimeExtra.structure}ms)`;\n }\n this.results.push({\n runtime: result.runtime,\n extra,\n name: obj.getType() + \" \" + obj.getName(),\n });\n }\n static output() {\n const MAX = 10;\n this.results.sort((a, b) => { return b.runtime - a.runtime; });\n for (let i = 0; i < MAX; i++) {\n const row = this.results[i];\n if (row === undefined) {\n break;\n }\n process.stderr.write(`\\t${row.runtime}ms\\t${row.name} ${row.extra}\\n`);\n }\n process.stderr.write(`\\tTotal lexing: ${this.lexing}ms\\n`);\n process.stderr.write(`\\tTotal statements: ${this.statements}ms\\n`);\n process.stderr.write(`\\tTotal structure: ${this.structure}ms\\n`);\n }\n}\n///////////////////////////////////////////////////////////////////////////////////////////////\nclass Registry {\n constructor(conf) {\n this.objects = {};\n this.objectsByType = {};\n /** object containing filenames of dependencies */\n this.dependencies = {};\n this.issues = [];\n this.conf = conf ? conf : config_1.Config.getDefault();\n this.references = new ddic_references_1.DDICReferences();\n }\n static abaplintVersion() {\n // magic, see build script \"version.sh\"\n return \"2.82.0\";\n }\n getDDICReferences() {\n return this.references;\n }\n *getObjects() {\n for (const name in this.objects) {\n for (const type in this.objects[name]) {\n yield this.objects[name][type];\n }\n }\n }\n *getObjectsByType(type) {\n for (const name in this.objectsByType[type] || []) {\n yield this.objectsByType[type][name];\n }\n }\n *getFiles() {\n for (const obj of this.getObjects()) {\n for (const file of obj.getFiles()) {\n yield file;\n }\n }\n }\n getFirstObject() {\n for (const name in this.objects) {\n for (const type in this.objects[name]) {\n return this.objects[name][type];\n }\n }\n return undefined;\n }\n getObjectCount(skipDependencies = true) {\n let res = 0;\n for (const o of this.getObjects()) {\n if (skipDependencies === true && this.isDependency(o)) {\n continue;\n }\n res = res + 1;\n }\n return res;\n }\n getFileByName(filename) {\n const upper = filename.toUpperCase();\n for (const o of this.getObjects()) {\n for (const f of o.getFiles()) {\n if (f.getFilename().toUpperCase() === upper) {\n return f;\n }\n }\n }\n return undefined;\n }\n getObject(type, name) {\n if (type === undefined || name === undefined) {\n return undefined;\n }\n const searchName = name.toUpperCase();\n if (this.objects[searchName]) {\n return this.objects[searchName][type];\n }\n return undefined;\n }\n getConfig() {\n return this.conf;\n }\n // assumption: Config is immutable, and can only be changed via this method\n setConfig(conf) {\n for (const obj of this.getObjects()) {\n obj.setDirty();\n }\n this.conf = conf;\n return this;\n }\n inErrorNamespace(name) {\n const reg = new RegExp(this.getConfig().getSyntaxSetttings().errorNamespace, \"i\");\n return reg.test(name);\n }\n addFile(file) {\n return this.addFiles([file]);\n }\n updateFile(file) {\n const obj = this.find(file.getObjectName(), file.getObjectType());\n obj.updateFile(file);\n return this;\n }\n removeFile(file) {\n const obj = this.find(file.getObjectName(), file.getObjectType());\n obj.removeFile(file);\n if (obj.getFiles().length === 0) {\n this.references.clear(obj);\n this.removeObject(obj);\n }\n return this;\n }\n addFiles(files) {\n var _a;\n const globalExclude = ((_a = this.conf.getGlobal().exclude) !== null && _a !== void 0 ? _a : [])\n .map(pattern => new RegExp(pattern, \"i\"));\n for (const f of files) {\n const filename = f.getFilename();\n const isNotAbapgitFile = filename.split(\".\").length <= 2;\n if (isNotAbapgitFile || excludeHelper_1.ExcludeHelper.isExcluded(filename, globalExclude)) {\n continue;\n }\n const found = this.findOrCreate(f.getObjectName(), f.getObjectType());\n found.addFile(f);\n }\n return this;\n }\n addDependencies(files) {\n for (const f of files) {\n this.dependencies[f.getFilename().toUpperCase()] = true;\n }\n return this.addFiles(files);\n }\n addDependency(file) {\n this.dependencies[file.getFilename().toUpperCase()] = true;\n this.addFile(file);\n return this;\n }\n isDependency(obj) {\n const filename = obj.getFiles()[0].getFilename().toUpperCase();\n return this.dependencies[filename] === true;\n }\n isFileDependency(filename) {\n return this.dependencies[filename.toUpperCase()] === true;\n }\n // assumption: the file is already in the registry\n findObjectForFile(file) {\n const filename = file.getFilename();\n for (const obj of this.getObjects()) {\n for (const ofile of obj.getFiles()) {\n if (ofile.getFilename() === filename) {\n return obj;\n }\n }\n }\n return undefined;\n }\n // todo, this will be changed to async sometime\n findIssues(input) {\n if (this.isDirty() === true) {\n this.parse();\n }\n return this.runRules(input);\n }\n // todo, this will be changed to async sometime\n findIssuesObject(iobj) {\n if (this.isDirty() === true) {\n this.parse();\n }\n return this.runRules(undefined, iobj);\n }\n // todo, this will be changed to async sometime\n parse() {\n if (this.isDirty() === false) {\n return this;\n }\n ParsingPerformance.clear();\n this.issues = [];\n for (const o of this.getObjects()) {\n this.parsePrivate(o);\n this.issues.push(...o.getParsingIssues());\n }\n new find_global_definitions_1.FindGlobalDefinitions(this).run();\n return this;\n }\n async parseAsync(input) {\n var _a, _b;\n if (this.isDirty() === false) {\n return this;\n }\n ParsingPerformance.clear();\n (_a = input === null || input === void 0 ? void 0 : input.progress) === null || _a === void 0 ? void 0 : _a.set(this.getObjectCount(false), \"Lexing and parsing\");\n this.issues = [];\n for (const o of this.getObjects()) {\n await ((_b = input === null || input === void 0 ? void 0 : input.progress) === null || _b === void 0 ? void 0 : _b.tick(\"Lexing and parsing(\" + this.conf.getVersion() + \") - \" + o.getType() + \" \" + o.getName()));\n this.parsePrivate(o);\n this.issues.push(...o.getParsingIssues());\n }\n if ((input === null || input === void 0 ? void 0 : input.outputPerformance) === true) {\n ParsingPerformance.output();\n }\n new find_global_definitions_1.FindGlobalDefinitions(this).run(input === null || input === void 0 ? void 0 : input.progress);\n return this;\n }\n //////////////////////////////////////////\n // todo, refactor, this is a mess, see where-used, a lot of the code should be in this method instead\n parsePrivate(input) {\n const config = this.getConfig();\n const result = input.parse(config.getVersion(), config.getSyntaxSetttings().globalMacros);\n ParsingPerformance.push(input, result);\n }\n isDirty() {\n for (const o of this.getObjects()) {\n const dirty = o.isDirty();\n if (dirty === true) {\n return true;\n }\n }\n return false;\n }\n runRules(input, iobj) {\n var _a, _b, _c, _d, _e, _f;\n const rulePerformance = {};\n const issues = this.issues.slice(0);\n const objects = iobj ? [iobj] : this.getObjects();\n const rules = this.conf.getEnabledRules();\n const skipLogic = new skip_logic_1.SkipLogic(this);\n (_a = input === null || input === void 0 ? void 0 : input.progress) === null || _a === void 0 ? void 0 : _a.set(iobj ? 1 : this.getObjectCount(false), \"Run Syntax\");\n const check = [];\n for (const obj of objects) {\n (_b = input === null || input === void 0 ? void 0 : input.progress) === null || _b === void 0 ? void 0 : _b.tick(\"Run Syntax - \" + obj.getName());\n if (skipLogic.skip(obj) || this.isDependency(obj)) {\n continue;\n }\n if (obj instanceof _abap_object_1.ABAPObject) {\n new syntax_1.SyntaxLogic(this, obj).run();\n }\n check.push(obj);\n }\n (_c = input === null || input === void 0 ? void 0 : input.progress) === null || _c === void 0 ? void 0 : _c.set(rules.length, \"Initialize Rules\");\n for (const rule of rules) {\n (_d = input === null || input === void 0 ? void 0 : input.progress) === null || _d === void 0 ? void 0 : _d.tick(\"Initialize Rules - \" + rule.getMetadata().key);\n if (rule.initialize === undefined) {\n throw new Error(rule.getMetadata().key + \" missing initialize method\");\n }\n rule.initialize(this);\n rulePerformance[rule.getMetadata().key] = 0;\n }\n (_e = input === null || input === void 0 ? void 0 : input.progress) === null || _e === void 0 ? void 0 : _e.set(check.length, \"Finding Issues\");\n for (const obj of check) {\n (_f = input === null || input === void 0 ? void 0 : input.progress) === null || _f === void 0 ? void 0 : _f.tick(\"Finding Issues - \" + obj.getType() + \" \" + obj.getName());\n for (const rule of rules) {\n const before = Date.now();\n issues.push(...rule.run(obj));\n const runtime = Date.now() - before;\n rulePerformance[rule.getMetadata().key] = rulePerformance[rule.getMetadata().key] + runtime;\n }\n }\n if ((input === null || input === void 0 ? void 0 : input.outputPerformance) === true) {\n const perf = [];\n for (const p in rulePerformance) {\n if (rulePerformance[p] > 100) { // ignore rules if it takes less than 100ms\n perf.push({ name: p, time: rulePerformance[p] });\n }\n }\n perf.sort((a, b) => { return b.time - a.time; });\n for (const p of perf) {\n process.stderr.write(\"\\t\" + p.time + \"ms\\t\" + p.name + \"\\n\");\n }\n }\n return this.excludeIssues(issues);\n }\n excludeIssues(issues) {\n var _a;\n const ret = issues;\n // exclude issues, as now we know both the filename and issue key\n for (const rule of artifacts_rules_1.ArtifactsRules.getRules()) {\n const key = rule.getMetadata().key;\n const ruleExclude = ((_a = this.conf.readByKey(key, \"exclude\")) !== null && _a !== void 0 ? _a : []);\n const ruleExcludePatterns = ruleExclude.map(x => new RegExp(x, \"i\"));\n for (let i = ret.length - 1; i >= 0; i--) {\n if (ret[i].getKey() !== key) {\n continue;\n }\n const filename = ret[i].getFilename();\n if (excludeHelper_1.ExcludeHelper.isExcluded(filename, ruleExcludePatterns)) {\n ret.splice(i, 1);\n }\n }\n }\n return ret;\n }\n findOrCreate(name, type) {\n try {\n return this.find(name, type);\n }\n catch (_a) {\n const newName = name.toUpperCase();\n const newType = type ? type : \"UNKNOWN\";\n const add = artifacts_objects_1.ArtifactsObjects.newObject(newName, newType);\n if (this.objects[newName] === undefined) {\n this.objects[newName] = {};\n }\n this.objects[newName][newType] = add;\n if (this.objectsByType[newType] === undefined) {\n this.objectsByType[newType] = {};\n }\n this.objectsByType[newType][newName] = add;\n return add;\n }\n }\n removeObject(remove) {\n if (remove === undefined) {\n return;\n }\n if (this.objects[remove.getName()][remove.getType()] === undefined) {\n throw new Error(\"removeObject: object not found\");\n }\n if (Object.keys(this.objects[remove.getName()]).length === 1) {\n delete this.objects[remove.getName()];\n }\n else {\n delete this.objects[remove.getName()][remove.getType()];\n }\n if (Object.keys(this.objectsByType[remove.getType()]).length === 1) {\n delete this.objectsByType[remove.getType()];\n }\n else {\n delete this.objectsByType[remove.getType()][remove.getName()];\n }\n }\n find(name, type) {\n const searchType = type ? type : \"UNKNOWN\";\n const searchName = name.toUpperCase();\n if (this.objects[searchName] !== undefined\n && this.objects[searchName][searchType]) {\n return this.objects[searchName][searchType];\n }\n throw new Error(\"find: object not found, \" + type + \" \" + name);\n }\n}\nexports.Registry = Registry;\n//# sourceMappingURL=registry.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/registry.js?");
|
|
10712
10712
|
|
|
10713
10713
|
/***/ }),
|
|
10714
10714
|
|
|
@@ -11379,7 +11379,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
|
|
|
11379
11379
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
11380
11380
|
|
|
11381
11381
|
"use strict";
|
|
11382
|
-
eval("\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\r\n};\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n__exportStar(__webpack_require__(/*! ./7bit_ascii */ \"./node_modules/@abaplint/core/build/src/rules/7bit_ascii.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./abapdoc */ \"./node_modules/@abaplint/core/build/src/rules/abapdoc.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./align_parameters */ \"./node_modules/@abaplint/core/build/src/rules/align_parameters.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./allowed_object_naming */ \"./node_modules/@abaplint/core/build/src/rules/allowed_object_naming.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./allowed_object_types */ \"./node_modules/@abaplint/core/build/src/rules/allowed_object_types.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./ambiguous_statement */ \"./node_modules/@abaplint/core/build/src/rules/ambiguous_statement.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./avoid_use */ \"./node_modules/@abaplint/core/build/src/rules/avoid_use.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./begin_end_names */ \"./node_modules/@abaplint/core/build/src/rules/begin_end_names.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./begin_single_include */ \"./node_modules/@abaplint/core/build/src/rules/begin_single_include.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./call_transaction_authority_check */ \"./node_modules/@abaplint/core/build/src/rules/call_transaction_authority_check.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./chain_mainly_declarations */ \"./node_modules/@abaplint/core/build/src/rules/chain_mainly_declarations.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./check_abstract */ \"./node_modules/@abaplint/core/build/src/rules/check_abstract.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./check_comments */ \"./node_modules/@abaplint/core/build/src/rules/check_comments.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./check_ddic */ \"./node_modules/@abaplint/core/build/src/rules/check_ddic.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./check_include */ \"./node_modules/@abaplint/core/build/src/rules/check_include.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./check_no_handler_pragma */ \"./node_modules/@abaplint/core/build/src/rules/check_no_handler_pragma.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./check_subrc */ \"./node_modules/@abaplint/core/build/src/rules/check_subrc.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./check_syntax */ \"./node_modules/@abaplint/core/build/src/rules/check_syntax.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./check_text_elements */ \"./node_modules/@abaplint/core/build/src/rules/check_text_elements.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./check_transformation_exists */ \"./node_modules/@abaplint/core/build/src/rules/check_transformation_exists.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./class_attribute_names */ \"./node_modules/@abaplint/core/build/src/rules/class_attribute_names.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cloud_types */ \"./node_modules/@abaplint/core/build/src/rules/cloud_types.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./colon_missing_space */ \"./node_modules/@abaplint/core/build/src/rules/colon_missing_space.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./commented_code */ \"./node_modules/@abaplint/core/build/src/rules/commented_code.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./constant_classes */ \"./node_modules/@abaplint/core/build/src/rules/constant_classes.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./constructor_visibility_public */ \"./node_modules/@abaplint/core/build/src/rules/constructor_visibility_public.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./contains_tab */ \"./node_modules/@abaplint/core/build/src/rules/contains_tab.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cyclic_oo */ \"./node_modules/@abaplint/core/build/src/rules/cyclic_oo.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cyclomatic_complexity */ \"./node_modules/@abaplint/core/build/src/rules/cyclomatic_complexity.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./dangerous_statement */ \"./node_modules/@abaplint/core/build/src/rules/dangerous_statement.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./db_operation_in_loop */ \"./node_modules/@abaplint/core/build/src/rules/db_operation_in_loop.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./definitions_top */ \"./node_modules/@abaplint/core/build/src/rules/definitions_top.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./description_empty */ \"./node_modules/@abaplint/core/build/src/rules/description_empty.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./double_space */ \"./node_modules/@abaplint/core/build/src/rules/double_space.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./downport */ \"./node_modules/@abaplint/core/build/src/rules/downport.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./empty_line_in_statement */ \"./node_modules/@abaplint/core/build/src/rules/empty_line_in_statement.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./empty_statement */ \"./node_modules/@abaplint/core/build/src/rules/empty_statement.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./empty_structure */ \"./node_modules/@abaplint/core/build/src/rules/empty_structure.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./exit_or_check */ \"./node_modules/@abaplint/core/build/src/rules/exit_or_check.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./exporting */ \"./node_modules/@abaplint/core/build/src/rules/exporting.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./forbidden_identifier */ \"./node_modules/@abaplint/core/build/src/rules/forbidden_identifier.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./forbidden_pseudo_and_pragma */ \"./node_modules/@abaplint/core/build/src/rules/forbidden_pseudo_and_pragma.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./forbidden_void_type */ \"./node_modules/@abaplint/core/build/src/rules/forbidden_void_type.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./form_tables_obsolete */ \"./node_modules/@abaplint/core/build/src/rules/form_tables_obsolete.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./fully_type_constants */ \"./node_modules/@abaplint/core/build/src/rules/fully_type_constants.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./function_module_recommendations */ \"./node_modules/@abaplint/core/build/src/rules/function_module_recommendations.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./functional_writing */ \"./node_modules/@abaplint/core/build/src/rules/functional_writing.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./global_class */ \"./node_modules/@abaplint/core/build/src/rules/global_class.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./identical_conditions */ \"./node_modules/@abaplint/core/build/src/rules/identical_conditions.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./identical_contents */ \"./node_modules/@abaplint/core/build/src/rules/identical_contents.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./identical_descriptions */ \"./node_modules/@abaplint/core/build/src/rules/identical_descriptions.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./identical_form_names */ \"./node_modules/@abaplint/core/build/src/rules/identical_form_names.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./if_in_if */ \"./node_modules/@abaplint/core/build/src/rules/if_in_if.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./implement_methods */ \"./node_modules/@abaplint/core/build/src/rules/implement_methods.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./in_statement_indentation */ \"./node_modules/@abaplint/core/build/src/rules/in_statement_indentation.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./indentation */ \"./node_modules/@abaplint/core/build/src/rules/indentation.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./inline_data_old_versions */ \"./node_modules/@abaplint/core/build/src/rules/inline_data_old_versions.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./intf_referencing_clas */ \"./node_modules/@abaplint/core/build/src/rules/intf_referencing_clas.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./keep_single_parameter_on_one_line */ \"./node_modules/@abaplint/core/build/src/rules/keep_single_parameter_on_one_line.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./keyword_case */ \"./node_modules/@abaplint/core/build/src/rules/keyword_case.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./line_break_multiple_parameters */ \"./node_modules/@abaplint/core/build/src/rules/line_break_multiple_parameters.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./line_break_style */ \"./node_modules/@abaplint/core/build/src/rules/line_break_style.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./line_length */ \"./node_modules/@abaplint/core/build/src/rules/line_length.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./line_only_punc */ \"./node_modules/@abaplint/core/build/src/rules/line_only_punc.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./local_class_naming */ \"./node_modules/@abaplint/core/build/src/rules/local_class_naming.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./local_testclass_location */ \"./node_modules/@abaplint/core/build/src/rules/local_testclass_location.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./local_variable_names */ \"./node_modules/@abaplint/core/build/src/rules/local_variable_names.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./main_file_contents */ \"./node_modules/@abaplint/core/build/src/rules/main_file_contents.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./many_parentheses */ \"./node_modules/@abaplint/core/build/src/rules/many_parentheses.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./max_one_method_parameter_per_line */ \"./node_modules/@abaplint/core/build/src/rules/max_one_method_parameter_per_line.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./max_one_statement */ \"./node_modules/@abaplint/core/build/src/rules/max_one_statement.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./message_exists */ \"./node_modules/@abaplint/core/build/src/rules/message_exists.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./method_implemented_twice */ \"./node_modules/@abaplint/core/build/src/rules/method_implemented_twice.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./method_length */ \"./node_modules/@abaplint/core/build/src/rules/method_length.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./method_overwrites_builtin */ \"./node_modules/@abaplint/core/build/src/rules/method_overwrites_builtin.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./method_parameter_names */ \"./node_modules/@abaplint/core/build/src/rules/method_parameter_names.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./mix_returning */ \"./node_modules/@abaplint/core/build/src/rules/mix_returning.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./modify_only_own_db_tables */ \"./node_modules/@abaplint/core/build/src/rules/modify_only_own_db_tables.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./msag_consistency */ \"./node_modules/@abaplint/core/build/src/rules/msag_consistency.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./names_no_dash */ \"./node_modules/@abaplint/core/build/src/rules/names_no_dash.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./nesting */ \"./node_modules/@abaplint/core/build/src/rules/nesting.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./newline_between_methods */ \"./node_modules/@abaplint/core/build/src/rules/newline_between_methods.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./no_chained_assignment */ \"./node_modules/@abaplint/core/build/src/rules/no_chained_assignment.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./no_public_attributes */ \"./node_modules/@abaplint/core/build/src/rules/no_public_attributes.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./no_yoda_conditions */ \"./node_modules/@abaplint/core/build/src/rules/no_yoda_conditions.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./object_naming */ \"./node_modules/@abaplint/core/build/src/rules/object_naming.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./obsolete_statement */ \"./node_modules/@abaplint/core/build/src/rules/obsolete_statement.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./omit_parameter_name */ \"./node_modules/@abaplint/core/build/src/rules/omit_parameter_name.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./omit_receiving */ \"./node_modules/@abaplint/core/build/src/rules/omit_receiving.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./parser_702_chaining */ \"./node_modules/@abaplint/core/build/src/rules/parser_702_chaining.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./parser_error */ \"./node_modules/@abaplint/core/build/src/rules/parser_error.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./parser_missing_space */ \"./node_modules/@abaplint/core/build/src/rules/parser_missing_space.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./pragma_placement */ \"./node_modules/@abaplint/core/build/src/rules/pragma_placement.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./prefer_inline */ \"./node_modules/@abaplint/core/build/src/rules/prefer_inline.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./prefer_is_not */ \"./node_modules/@abaplint/core/build/src/rules/prefer_is_not.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./prefer_raise_exception_new */ \"./node_modules/@abaplint/core/build/src/rules/prefer_raise_exception_new.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./prefer_returning_to_exporting */ \"./node_modules/@abaplint/core/build/src/rules/prefer_returning_to_exporting.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./prefer_xsdbool */ \"./node_modules/@abaplint/core/build/src/rules/prefer_xsdbool.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./preferred_compare_operator */ \"./node_modules/@abaplint/core/build/src/rules/preferred_compare_operator.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./prefix_is_current_class */ \"./node_modules/@abaplint/core/build/src/rules/prefix_is_current_class.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./reduce_string_templates */ \"./node_modules/@abaplint/core/build/src/rules/reduce_string_templates.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./release_idoc */ \"./node_modules/@abaplint/core/build/src/rules/release_idoc.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./remove_descriptions */ \"./node_modules/@abaplint/core/build/src/rules/remove_descriptions.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./rfc_error_handling */ \"./node_modules/@abaplint/core/build/src/rules/rfc_error_handling.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./select_add_order_by */ \"./node_modules/@abaplint/core/build/src/rules/select_add_order_by.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./select_performance */ \"./node_modules/@abaplint/core/build/src/rules/select_performance.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./selection_screen_naming */ \"./node_modules/@abaplint/core/build/src/rules/selection_screen_naming.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./sequential_blank */ \"./node_modules/@abaplint/core/build/src/rules/sequential_blank.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./short_case */ \"./node_modules/@abaplint/core/build/src/rules/short_case.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./sicf_consistency */ \"./node_modules/@abaplint/core/build/src/rules/sicf_consistency.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./space_before_colon */ \"./node_modules/@abaplint/core/build/src/rules/space_before_colon.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./space_before_dot */ \"./node_modules/@abaplint/core/build/src/rules/space_before_dot.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./sql_escape_host_variables */ \"./node_modules/@abaplint/core/build/src/rules/sql_escape_host_variables.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./start_at_tab */ \"./node_modules/@abaplint/core/build/src/rules/start_at_tab.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./superclass_final */ \"./node_modules/@abaplint/core/build/src/rules/superclass_final.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./sy_modification */ \"./node_modules/@abaplint/core/build/src/rules/sy_modification.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./tabl_enhancement_category */ \"./node_modules/@abaplint/core/build/src/rules/tabl_enhancement_category.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./try_without_catch */ \"./node_modules/@abaplint/core/build/src/rules/try_without_catch.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./type_form_parameters */ \"./node_modules/@abaplint/core/build/src/rules/type_form_parameters.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./types_naming */ \"./node_modules/@abaplint/core/build/src/rules/types_naming.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./uncaught_exception */ \"./node_modules/@abaplint/core/build/src/rules/uncaught_exception.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./unknown_types */ \"./node_modules/@abaplint/core/build/src/rules/unknown_types.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./unnecessary_chaining */ \"./node_modules/@abaplint/core/build/src/rules/unnecessary_chaining.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./unreachable_code */ \"./node_modules/@abaplint/core/build/src/rules/unreachable_code.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./unsecure_fae */ \"./node_modules/@abaplint/core/build/src/rules/unsecure_fae.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./unused_ddic */ \"./node_modules/@abaplint/core/build/src/rules/unused_ddic.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./unused_methods */ \"./node_modules/@abaplint/core/build/src/rules/unused_methods.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./unused_types */ \"./node_modules/@abaplint/core/build/src/rules/unused_types.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./unused_variables */ \"./node_modules/@abaplint/core/build/src/rules/unused_variables.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./use_bool_expression */ \"./node_modules/@abaplint/core/build/src/rules/use_bool_expression.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./use_class_based_exceptions */ \"./node_modules/@abaplint/core/build/src/rules/use_class_based_exceptions.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./use_line_exists */ \"./node_modules/@abaplint/core/build/src/rules/use_line_exists.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./use_new */ \"./node_modules/@abaplint/core/build/src/rules/use_new.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./when_others_last */ \"./node_modules/@abaplint/core/build/src/rules/when_others_last.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./whitespace_end */ \"./node_modules/@abaplint/core/build/src/rules/whitespace_end.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./xml_consistency */ \"./node_modules/@abaplint/core/build/src/rules/xml_consistency.js\"), exports);\r\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/rules/index.js?");
|
|
11382
|
+
eval("\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\r\n};\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n__exportStar(__webpack_require__(/*! ./7bit_ascii */ \"./node_modules/@abaplint/core/build/src/rules/7bit_ascii.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./abapdoc */ \"./node_modules/@abaplint/core/build/src/rules/abapdoc.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./align_parameters */ \"./node_modules/@abaplint/core/build/src/rules/align_parameters.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./allowed_object_naming */ \"./node_modules/@abaplint/core/build/src/rules/allowed_object_naming.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./allowed_object_types */ \"./node_modules/@abaplint/core/build/src/rules/allowed_object_types.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./ambiguous_statement */ \"./node_modules/@abaplint/core/build/src/rules/ambiguous_statement.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./avoid_use */ \"./node_modules/@abaplint/core/build/src/rules/avoid_use.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./begin_end_names */ \"./node_modules/@abaplint/core/build/src/rules/begin_end_names.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./begin_single_include */ \"./node_modules/@abaplint/core/build/src/rules/begin_single_include.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./call_transaction_authority_check */ \"./node_modules/@abaplint/core/build/src/rules/call_transaction_authority_check.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./chain_mainly_declarations */ \"./node_modules/@abaplint/core/build/src/rules/chain_mainly_declarations.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./check_abstract */ \"./node_modules/@abaplint/core/build/src/rules/check_abstract.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./check_comments */ \"./node_modules/@abaplint/core/build/src/rules/check_comments.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./check_ddic */ \"./node_modules/@abaplint/core/build/src/rules/check_ddic.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./check_include */ \"./node_modules/@abaplint/core/build/src/rules/check_include.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./check_no_handler_pragma */ \"./node_modules/@abaplint/core/build/src/rules/check_no_handler_pragma.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./check_subrc */ \"./node_modules/@abaplint/core/build/src/rules/check_subrc.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./check_syntax */ \"./node_modules/@abaplint/core/build/src/rules/check_syntax.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./check_text_elements */ \"./node_modules/@abaplint/core/build/src/rules/check_text_elements.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./check_transformation_exists */ \"./node_modules/@abaplint/core/build/src/rules/check_transformation_exists.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./class_attribute_names */ \"./node_modules/@abaplint/core/build/src/rules/class_attribute_names.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cloud_types */ \"./node_modules/@abaplint/core/build/src/rules/cloud_types.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./colon_missing_space */ \"./node_modules/@abaplint/core/build/src/rules/colon_missing_space.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./commented_code */ \"./node_modules/@abaplint/core/build/src/rules/commented_code.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./constant_classes */ \"./node_modules/@abaplint/core/build/src/rules/constant_classes.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./constructor_visibility_public */ \"./node_modules/@abaplint/core/build/src/rules/constructor_visibility_public.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./contains_tab */ \"./node_modules/@abaplint/core/build/src/rules/contains_tab.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cyclic_oo */ \"./node_modules/@abaplint/core/build/src/rules/cyclic_oo.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./cyclomatic_complexity */ \"./node_modules/@abaplint/core/build/src/rules/cyclomatic_complexity.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./dangerous_statement */ \"./node_modules/@abaplint/core/build/src/rules/dangerous_statement.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./db_operation_in_loop */ \"./node_modules/@abaplint/core/build/src/rules/db_operation_in_loop.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./definitions_top */ \"./node_modules/@abaplint/core/build/src/rules/definitions_top.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./description_empty */ \"./node_modules/@abaplint/core/build/src/rules/description_empty.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./double_space */ \"./node_modules/@abaplint/core/build/src/rules/double_space.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./downport */ \"./node_modules/@abaplint/core/build/src/rules/downport.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./empty_line_in_statement */ \"./node_modules/@abaplint/core/build/src/rules/empty_line_in_statement.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./empty_statement */ \"./node_modules/@abaplint/core/build/src/rules/empty_statement.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./empty_structure */ \"./node_modules/@abaplint/core/build/src/rules/empty_structure.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./exit_or_check */ \"./node_modules/@abaplint/core/build/src/rules/exit_or_check.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./exporting */ \"./node_modules/@abaplint/core/build/src/rules/exporting.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./forbidden_identifier */ \"./node_modules/@abaplint/core/build/src/rules/forbidden_identifier.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./forbidden_pseudo_and_pragma */ \"./node_modules/@abaplint/core/build/src/rules/forbidden_pseudo_and_pragma.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./forbidden_void_type */ \"./node_modules/@abaplint/core/build/src/rules/forbidden_void_type.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./form_tables_obsolete */ \"./node_modules/@abaplint/core/build/src/rules/form_tables_obsolete.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./fully_type_constants */ \"./node_modules/@abaplint/core/build/src/rules/fully_type_constants.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./function_module_recommendations */ \"./node_modules/@abaplint/core/build/src/rules/function_module_recommendations.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./functional_writing */ \"./node_modules/@abaplint/core/build/src/rules/functional_writing.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./global_class */ \"./node_modules/@abaplint/core/build/src/rules/global_class.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./identical_conditions */ \"./node_modules/@abaplint/core/build/src/rules/identical_conditions.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./identical_contents */ \"./node_modules/@abaplint/core/build/src/rules/identical_contents.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./identical_descriptions */ \"./node_modules/@abaplint/core/build/src/rules/identical_descriptions.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./identical_form_names */ \"./node_modules/@abaplint/core/build/src/rules/identical_form_names.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./if_in_if */ \"./node_modules/@abaplint/core/build/src/rules/if_in_if.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./implement_methods */ \"./node_modules/@abaplint/core/build/src/rules/implement_methods.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./in_statement_indentation */ \"./node_modules/@abaplint/core/build/src/rules/in_statement_indentation.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./indentation */ \"./node_modules/@abaplint/core/build/src/rules/indentation.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./inline_data_old_versions */ \"./node_modules/@abaplint/core/build/src/rules/inline_data_old_versions.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./intf_referencing_clas */ \"./node_modules/@abaplint/core/build/src/rules/intf_referencing_clas.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./keep_single_parameter_on_one_line */ \"./node_modules/@abaplint/core/build/src/rules/keep_single_parameter_on_one_line.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./keyword_case */ \"./node_modules/@abaplint/core/build/src/rules/keyword_case.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./line_break_multiple_parameters */ \"./node_modules/@abaplint/core/build/src/rules/line_break_multiple_parameters.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./line_break_style */ \"./node_modules/@abaplint/core/build/src/rules/line_break_style.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./line_length */ \"./node_modules/@abaplint/core/build/src/rules/line_length.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./line_only_punc */ \"./node_modules/@abaplint/core/build/src/rules/line_only_punc.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./local_class_naming */ \"./node_modules/@abaplint/core/build/src/rules/local_class_naming.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./local_testclass_location */ \"./node_modules/@abaplint/core/build/src/rules/local_testclass_location.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./local_variable_names */ \"./node_modules/@abaplint/core/build/src/rules/local_variable_names.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./main_file_contents */ \"./node_modules/@abaplint/core/build/src/rules/main_file_contents.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./many_parentheses */ \"./node_modules/@abaplint/core/build/src/rules/many_parentheses.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./max_one_method_parameter_per_line */ \"./node_modules/@abaplint/core/build/src/rules/max_one_method_parameter_per_line.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./max_one_statement */ \"./node_modules/@abaplint/core/build/src/rules/max_one_statement.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./message_exists */ \"./node_modules/@abaplint/core/build/src/rules/message_exists.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./method_implemented_twice */ \"./node_modules/@abaplint/core/build/src/rules/method_implemented_twice.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./method_length */ \"./node_modules/@abaplint/core/build/src/rules/method_length.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./method_overwrites_builtin */ \"./node_modules/@abaplint/core/build/src/rules/method_overwrites_builtin.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./method_parameter_names */ \"./node_modules/@abaplint/core/build/src/rules/method_parameter_names.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./mix_returning */ \"./node_modules/@abaplint/core/build/src/rules/mix_returning.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./modify_only_own_db_tables */ \"./node_modules/@abaplint/core/build/src/rules/modify_only_own_db_tables.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./msag_consistency */ \"./node_modules/@abaplint/core/build/src/rules/msag_consistency.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./names_no_dash */ \"./node_modules/@abaplint/core/build/src/rules/names_no_dash.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./nesting */ \"./node_modules/@abaplint/core/build/src/rules/nesting.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./newline_between_methods */ \"./node_modules/@abaplint/core/build/src/rules/newline_between_methods.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./no_chained_assignment */ \"./node_modules/@abaplint/core/build/src/rules/no_chained_assignment.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./no_public_attributes */ \"./node_modules/@abaplint/core/build/src/rules/no_public_attributes.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./no_yoda_conditions */ \"./node_modules/@abaplint/core/build/src/rules/no_yoda_conditions.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./object_naming */ \"./node_modules/@abaplint/core/build/src/rules/object_naming.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./obsolete_statement */ \"./node_modules/@abaplint/core/build/src/rules/obsolete_statement.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./omit_parameter_name */ \"./node_modules/@abaplint/core/build/src/rules/omit_parameter_name.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./omit_receiving */ \"./node_modules/@abaplint/core/build/src/rules/omit_receiving.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./parser_702_chaining */ \"./node_modules/@abaplint/core/build/src/rules/parser_702_chaining.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./parser_error */ \"./node_modules/@abaplint/core/build/src/rules/parser_error.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./parser_missing_space */ \"./node_modules/@abaplint/core/build/src/rules/parser_missing_space.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./pragma_placement */ \"./node_modules/@abaplint/core/build/src/rules/pragma_placement.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./prefer_inline */ \"./node_modules/@abaplint/core/build/src/rules/prefer_inline.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./prefer_is_not */ \"./node_modules/@abaplint/core/build/src/rules/prefer_is_not.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./prefer_raise_exception_new */ \"./node_modules/@abaplint/core/build/src/rules/prefer_raise_exception_new.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./prefer_returning_to_exporting */ \"./node_modules/@abaplint/core/build/src/rules/prefer_returning_to_exporting.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./prefer_xsdbool */ \"./node_modules/@abaplint/core/build/src/rules/prefer_xsdbool.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./preferred_compare_operator */ \"./node_modules/@abaplint/core/build/src/rules/preferred_compare_operator.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./prefix_is_current_class */ \"./node_modules/@abaplint/core/build/src/rules/prefix_is_current_class.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./reduce_string_templates */ \"./node_modules/@abaplint/core/build/src/rules/reduce_string_templates.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./release_idoc */ \"./node_modules/@abaplint/core/build/src/rules/release_idoc.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./remove_descriptions */ \"./node_modules/@abaplint/core/build/src/rules/remove_descriptions.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./rfc_error_handling */ \"./node_modules/@abaplint/core/build/src/rules/rfc_error_handling.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./select_add_order_by */ \"./node_modules/@abaplint/core/build/src/rules/select_add_order_by.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./select_performance */ \"./node_modules/@abaplint/core/build/src/rules/select_performance.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./selection_screen_naming */ \"./node_modules/@abaplint/core/build/src/rules/selection_screen_naming.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./sequential_blank */ \"./node_modules/@abaplint/core/build/src/rules/sequential_blank.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./short_case */ \"./node_modules/@abaplint/core/build/src/rules/short_case.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./sicf_consistency */ \"./node_modules/@abaplint/core/build/src/rules/sicf_consistency.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./space_before_colon */ \"./node_modules/@abaplint/core/build/src/rules/space_before_colon.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./space_before_dot */ \"./node_modules/@abaplint/core/build/src/rules/space_before_dot.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./sql_escape_host_variables */ \"./node_modules/@abaplint/core/build/src/rules/sql_escape_host_variables.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./start_at_tab */ \"./node_modules/@abaplint/core/build/src/rules/start_at_tab.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./static_call_via_instance */ \"./node_modules/@abaplint/core/build/src/rules/static_call_via_instance.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./superclass_final */ \"./node_modules/@abaplint/core/build/src/rules/superclass_final.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./sy_modification */ \"./node_modules/@abaplint/core/build/src/rules/sy_modification.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./tabl_enhancement_category */ \"./node_modules/@abaplint/core/build/src/rules/tabl_enhancement_category.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./try_without_catch */ \"./node_modules/@abaplint/core/build/src/rules/try_without_catch.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./type_form_parameters */ \"./node_modules/@abaplint/core/build/src/rules/type_form_parameters.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./types_naming */ \"./node_modules/@abaplint/core/build/src/rules/types_naming.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./uncaught_exception */ \"./node_modules/@abaplint/core/build/src/rules/uncaught_exception.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./unknown_types */ \"./node_modules/@abaplint/core/build/src/rules/unknown_types.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./unnecessary_chaining */ \"./node_modules/@abaplint/core/build/src/rules/unnecessary_chaining.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./unreachable_code */ \"./node_modules/@abaplint/core/build/src/rules/unreachable_code.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./unsecure_fae */ \"./node_modules/@abaplint/core/build/src/rules/unsecure_fae.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./unused_ddic */ \"./node_modules/@abaplint/core/build/src/rules/unused_ddic.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./unused_methods */ \"./node_modules/@abaplint/core/build/src/rules/unused_methods.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./unused_types */ \"./node_modules/@abaplint/core/build/src/rules/unused_types.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./unused_variables */ \"./node_modules/@abaplint/core/build/src/rules/unused_variables.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./use_bool_expression */ \"./node_modules/@abaplint/core/build/src/rules/use_bool_expression.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./use_class_based_exceptions */ \"./node_modules/@abaplint/core/build/src/rules/use_class_based_exceptions.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./use_line_exists */ \"./node_modules/@abaplint/core/build/src/rules/use_line_exists.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./use_new */ \"./node_modules/@abaplint/core/build/src/rules/use_new.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./when_others_last */ \"./node_modules/@abaplint/core/build/src/rules/when_others_last.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./whitespace_end */ \"./node_modules/@abaplint/core/build/src/rules/whitespace_end.js\"), exports);\r\n__exportStar(__webpack_require__(/*! ./xml_consistency */ \"./node_modules/@abaplint/core/build/src/rules/xml_consistency.js\"), exports);\r\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/rules/index.js?");
|
|
11383
11383
|
|
|
11384
11384
|
/***/ }),
|
|
11385
11385
|
|
|
@@ -11775,7 +11775,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
|
|
|
11775
11775
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
11776
11776
|
|
|
11777
11777
|
"use strict";
|
|
11778
|
-
eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ParserMissingSpace = exports.ParserMissingSpaceConf = void 0;\r\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\r\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\r\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\r\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\r\nconst nodes_1 = __webpack_require__(/*! ../abap/nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\r\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\r\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\r\n// todo: this rule needs refactoring\r\nclass ParserMissingSpaceConf extends _basic_rule_config_1.BasicRuleConfig {\r\n}\r\nexports.ParserMissingSpaceConf = ParserMissingSpaceConf;\r\nclass ParserMissingSpace extends _abap_rule_1.ABAPRule {\r\n constructor() {\r\n super(...arguments);\r\n this.conf = new ParserMissingSpaceConf();\r\n }\r\n getMetadata() {\r\n return {\r\n key: \"parser_missing_space\",\r\n title: \"Parser Error, missing space\",\r\n shortDescription: `In special cases the ABAP language allows for not having spaces before or after string literals.\r\nThis rule makes sure the spaces are consistently required across the language.`,\r\n tags: [_irule_1.RuleTag.Syntax, _irule_1.RuleTag.Whitespace, _irule_1.RuleTag.SingleFile],\r\n badExample: `IF ( foo = 'bar').`,\r\n goodExample: `IF ( foo = 'bar' ).`,\r\n };\r\n }\r\n getConfig() {\r\n return this.conf;\r\n }\r\n setConfig(conf) {\r\n this.conf = conf;\r\n }\r\n runParsed(file) {\r\n const issues = [];\r\n let start = new position_1.Position(0, 0);\r\n for (const statement of file.getStatements()) {\r\n const missing = this.missingSpace(statement);\r\n if (missing) {\r\n const message = \"Missing space between string or character literal and parentheses\";\r\n start = missing;\r\n const issue = issue_1.Issue.atPosition(file, start, message, this.getMetadata().key, this.conf.severity);\r\n issues.push(issue);\r\n }\r\n }\r\n return issues;\r\n }\r\n missingSpace(statement) {\r\n const found = statement.findAllExpressionsMulti([Expressions.CondSub, Expressions.SQLCond,\r\n Expressions.ValueBody, Expressions.NewObject, Expressions.Cond, Expressions.ComponentCond, Expressions.MethodCallParam], true);\r\n let pos = undefined;\r\n for (const f of found) {\r\n const type = f.get();\r\n if (type instanceof Expressions.CondSub) {\r\n pos = this.checkCondSub(f);\r\n }\r\n else if (type instanceof Expressions.ValueBody) {\r\n pos = this.checkValueBody(f);\r\n }\r\n else if (type instanceof Expressions.Cond) {\r\n pos = this.checkCond(f);\r\n }\r\n else if (type instanceof Expressions.ComponentCond) {\r\n pos = this.checkComponentCond(f);\r\n }\r\n else if (type instanceof Expressions.SQLCond) {\r\n pos = this.checkSQLCond(f);\r\n }\r\n else if (type instanceof Expressions.NewObject) {\r\n pos = this.checkNewObject(f);\r\n }\r\n else if (type instanceof Expressions.MethodCallParam) {\r\n pos = this.checkMethodCallParam(f);\r\n }\r\n if (pos) {\r\n return pos;\r\n }\r\n }\r\n return undefined;\r\n }\r\n checkSQLCond(cond) {\r\n const children = cond.getChildren();\r\n for (let i = 0; i < children.length; i++) {\r\n if (children[i].get() instanceof Expressions.SQLCond) {\r\n const current = children[i];\r\n const prev = children[i - 1].getLastToken();\r\n const next = children[i + 1].getFirstToken();\r\n if (prev.getStr() === \"(\"\r\n && prev.getRow() === current.getFirstToken().getRow()\r\n && prev.getCol() + 1 === current.getFirstToken().getStart().getCol()) {\r\n return current.getFirstToken().getStart();\r\n }\r\n if (next.getStr() === \")\"\r\n && next.getRow() === current.getLastToken().getRow()\r\n && next.getCol() === current.getLastToken().getEnd().getCol()) {\r\n return current.getLastToken().getEnd();\r\n }\r\n }\r\n }\r\n return undefined;\r\n }\r\n checkNewObject(cond) {\r\n const children = cond.getChildren();\r\n {\r\n const first = children[children.length - 2].getLastToken();\r\n const second = children[children.length - 1].getFirstToken();\r\n if (first.getRow() === second.getRow()\r\n && first.getEnd().getCol() === second.getStart().getCol()) {\r\n return second.getStart();\r\n }\r\n }\r\n return undefined;\r\n }\r\n checkCondSub(cond) {\r\n const children = cond.getChildren();\r\n for (let i = 0; i < children.length; i++) {\r\n if (children[i].get() instanceof Expressions.Cond) {\r\n const current = children[i];\r\n const prev = children[i - 1].getLastToken();\r\n const next = children[i + 1].getFirstToken();\r\n if (prev.getStr() === \"(\"\r\n && prev.getRow() === current.getFirstToken().getRow()\r\n && prev.getCol() + 1 === current.getFirstToken().getStart().getCol()) {\r\n return current.getFirstToken().getStart();\r\n }\r\n if (next.getStr() === \")\"\r\n && next.getRow() === current.getLastToken().getRow()\r\n && next.getCol() === current.getLastToken().getEnd().getCol()) {\r\n return current.getLastToken().getEnd();\r\n }\r\n }\r\n }\r\n return undefined;\r\n }\r\n checkComponentCond(cond) {\r\n const children = cond.getChildren();\r\n for (let i = 0; i < children.length; i++) {\r\n if (children[i].get() instanceof Expressions.ComponentCond) {\r\n const current = children[i];\r\n const prev = children[i - 1].getLastToken();\r\n const next = children[i + 1].getFirstToken();\r\n if (prev.getStr() === \"(\"\r\n && prev.getRow() === current.getFirstToken().getRow()\r\n && prev.getCol() + 1 === current.getFirstToken().getStart().getCol()) {\r\n return current.getFirstToken().getStart();\r\n }\r\n if (next.getStr() === \")\"\r\n && next.getRow() === current.getLastToken().getRow()\r\n && next.getCol() === current.getLastToken().getEnd().getCol()) {\r\n return current.getLastToken().getEnd();\r\n }\r\n }\r\n }\r\n return undefined;\r\n }\r\n checkValueBody(vb) {\r\n var _a, _b;\r\n const children = vb.getChildren();\r\n for (let i = 0; i < children.length; i++) {\r\n const current = children[i];\r\n if (current instanceof nodes_1.TokenNode) {\r\n const prev = (_a = children[i - 1]) === null || _a === void 0 ? void 0 : _a.getLastToken();\r\n const next = (_b = children[i + 1]) === null || _b === void 0 ? void 0 : _b.getFirstToken();\r\n if (current.getFirstToken().getStr() === \"(\"\r\n && next\r\n && next.getRow() === current.getLastToken().getRow()\r\n && next.getCol() === current.getLastToken().getEnd().getCol()) {\r\n return current.getFirstToken().getStart();\r\n }\r\n if (current.getFirstToken().getStr() === \")\"\r\n && prev\r\n && prev.getRow() === current.getFirstToken().getRow()\r\n && prev.getEnd().getCol() === current.getFirstToken().getStart().getCol()) {\r\n return current.getLastToken().getEnd();\r\n }\r\n }\r\n }\r\n return undefined;\r\n }\r\n checkCond(cond) {\r\n const children = cond.getAllTokens();\r\n for (let i = 0; i < children.length - 1; i++) {\r\n const current = children[i];\r\n const next = children[i + 1];\r\n if (next.getStr().startsWith(\"'\")\r\n && next.getRow() === current.getRow()\r\n && next.getCol() === current.getEnd().getCol()) {\r\n return current.getEnd();\r\n }\r\n }\r\n return undefined;\r\n }\r\n checkMethodCallParam(call) {\r\n const children = call.getChildren();\r\n {\r\n const first = children[0].getFirstToken();\r\n const second = children[1].getFirstToken();\r\n if (first.getRow() === second.getRow()\r\n && first.getCol() + 1 === second.getStart().getCol()) {\r\n return second.getStart();\r\n }\r\n }\r\n {\r\n const first = children[children.length - 2].getLastToken();\r\n const second = children[children.length - 1].getFirstToken();\r\n if (first.getRow() === second.getRow()\r\n && first.getEnd().getCol() === second.getStart().getCol()) {\r\n return second.getStart();\r\n }\r\n }\r\n return undefined;\r\n }\r\n}\r\nexports.ParserMissingSpace = ParserMissingSpace;\r\n//# sourceMappingURL=parser_missing_space.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/rules/parser_missing_space.js?");
|
|
11778
|
+
eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ParserMissingSpace = exports.ParserMissingSpaceConf = void 0;\r\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\r\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\r\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\r\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\r\nconst nodes_1 = __webpack_require__(/*! ../abap/nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\r\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\r\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\r\n// todo: this rule needs refactoring\r\nclass ParserMissingSpaceConf extends _basic_rule_config_1.BasicRuleConfig {\r\n}\r\nexports.ParserMissingSpaceConf = ParserMissingSpaceConf;\r\nclass ParserMissingSpace extends _abap_rule_1.ABAPRule {\r\n constructor() {\r\n super(...arguments);\r\n this.conf = new ParserMissingSpaceConf();\r\n }\r\n getMetadata() {\r\n return {\r\n key: \"parser_missing_space\",\r\n title: \"Parser Error, missing space\",\r\n shortDescription: `In special cases the ABAP language allows for not having spaces before or after string literals.\r\nThis rule makes sure the spaces are consistently required across the language.`,\r\n tags: [_irule_1.RuleTag.Syntax, _irule_1.RuleTag.Whitespace, _irule_1.RuleTag.SingleFile],\r\n badExample: `IF ( foo = 'bar').`,\r\n goodExample: `IF ( foo = 'bar' ).`,\r\n };\r\n }\r\n getConfig() {\r\n return this.conf;\r\n }\r\n setConfig(conf) {\r\n this.conf = conf;\r\n }\r\n runParsed(file) {\r\n const issues = [];\r\n let start = new position_1.Position(0, 0);\r\n for (const statement of file.getStatements()) {\r\n const missing = this.missingSpace(statement);\r\n if (missing) {\r\n const message = \"Missing space between string or character literal and parentheses\";\r\n start = missing;\r\n const issue = issue_1.Issue.atPosition(file, start, message, this.getMetadata().key, this.conf.severity);\r\n issues.push(issue);\r\n }\r\n }\r\n return issues;\r\n }\r\n missingSpace(statement) {\r\n const found = statement.findAllExpressionsMulti([Expressions.CondSub, Expressions.SQLCond,\r\n Expressions.ValueBody, Expressions.NewObject, Expressions.Cond,\r\n Expressions.ComponentCond, Expressions.MethodCallParam], true);\r\n let pos = undefined;\r\n for (const f of found) {\r\n const type = f.get();\r\n if (type instanceof Expressions.CondSub) {\r\n pos = this.checkCondSub(f);\r\n }\r\n else if (type instanceof Expressions.ValueBody) {\r\n pos = this.checkValueBody(f);\r\n }\r\n else if (type instanceof Expressions.Cond) {\r\n pos = this.checkCond(f);\r\n }\r\n else if (type instanceof Expressions.ComponentCond) {\r\n pos = this.checkComponentCond(f);\r\n }\r\n else if (type instanceof Expressions.SQLCond) {\r\n pos = this.checkSQLCond(f);\r\n }\r\n else if (type instanceof Expressions.NewObject) {\r\n pos = this.checkNewObject(f);\r\n }\r\n else if (type instanceof Expressions.MethodCallParam) {\r\n pos = this.checkMethodCallParam(f);\r\n }\r\n if (pos) {\r\n return pos;\r\n }\r\n }\r\n return undefined;\r\n }\r\n checkSQLCond(cond) {\r\n const children = cond.getChildren();\r\n for (let i = 0; i < children.length; i++) {\r\n if (children[i].get() instanceof Expressions.SQLCond) {\r\n const current = children[i];\r\n const prev = children[i - 1].getLastToken();\r\n const next = children[i + 1].getFirstToken();\r\n if (prev.getStr() === \"(\"\r\n && prev.getRow() === current.getFirstToken().getRow()\r\n && prev.getCol() + 1 === current.getFirstToken().getStart().getCol()) {\r\n return current.getFirstToken().getStart();\r\n }\r\n if (next.getStr() === \")\"\r\n && next.getRow() === current.getLastToken().getRow()\r\n && next.getCol() === current.getLastToken().getEnd().getCol()) {\r\n return current.getLastToken().getEnd();\r\n }\r\n }\r\n }\r\n return undefined;\r\n }\r\n checkNewObject(cond) {\r\n const children = cond.getChildren();\r\n {\r\n const first = children[children.length - 2].getLastToken();\r\n const second = children[children.length - 1].getFirstToken();\r\n if (first.getRow() === second.getRow()\r\n && first.getEnd().getCol() === second.getStart().getCol()) {\r\n return second.getStart();\r\n }\r\n }\r\n return undefined;\r\n }\r\n checkCondSub(cond) {\r\n const children = cond.getChildren();\r\n for (let i = 0; i < children.length; i++) {\r\n if (children[i].get() instanceof Expressions.Cond) {\r\n const current = children[i];\r\n const prev = children[i - 1].getLastToken();\r\n const next = children[i + 1].getFirstToken();\r\n if (prev.getStr() === \"(\"\r\n && prev.getRow() === current.getFirstToken().getRow()\r\n && prev.getCol() + 1 === current.getFirstToken().getStart().getCol()) {\r\n return current.getFirstToken().getStart();\r\n }\r\n if (next.getStr() === \")\"\r\n && next.getRow() === current.getLastToken().getRow()\r\n && next.getCol() === current.getLastToken().getEnd().getCol()) {\r\n return current.getLastToken().getEnd();\r\n }\r\n }\r\n }\r\n return undefined;\r\n }\r\n checkComponentCond(cond) {\r\n const children = cond.getChildren();\r\n for (let i = 0; i < children.length; i++) {\r\n if (children[i].get() instanceof Expressions.ComponentCond) {\r\n const current = children[i];\r\n const prev = children[i - 1].getLastToken();\r\n const next = children[i + 1].getFirstToken();\r\n if (prev.getStr() === \"(\"\r\n && prev.getRow() === current.getFirstToken().getRow()\r\n && prev.getCol() + 1 === current.getFirstToken().getStart().getCol()) {\r\n return current.getFirstToken().getStart();\r\n }\r\n if (next.getStr() === \")\"\r\n && next.getRow() === current.getLastToken().getRow()\r\n && next.getCol() === current.getLastToken().getEnd().getCol()) {\r\n return current.getLastToken().getEnd();\r\n }\r\n }\r\n }\r\n return undefined;\r\n }\r\n checkValueBody(vb) {\r\n var _a, _b;\r\n const children = vb.getChildren();\r\n for (let i = 0; i < children.length; i++) {\r\n const current = children[i];\r\n if (current instanceof nodes_1.TokenNode) {\r\n const prev = (_a = children[i - 1]) === null || _a === void 0 ? void 0 : _a.getLastToken();\r\n const next = (_b = children[i + 1]) === null || _b === void 0 ? void 0 : _b.getFirstToken();\r\n if (current.getFirstToken().getStr() === \"(\"\r\n && next\r\n && next.getRow() === current.getLastToken().getRow()\r\n && next.getCol() === current.getLastToken().getEnd().getCol()) {\r\n return current.getFirstToken().getStart();\r\n }\r\n if (current.getFirstToken().getStr() === \")\"\r\n && prev\r\n && prev.getRow() === current.getFirstToken().getRow()\r\n && prev.getEnd().getCol() === current.getFirstToken().getStart().getCol()) {\r\n return current.getLastToken().getEnd();\r\n }\r\n }\r\n }\r\n return undefined;\r\n }\r\n checkCond(cond) {\r\n const children = cond.getAllTokens();\r\n for (let i = 0; i < children.length - 1; i++) {\r\n const current = children[i];\r\n const next = children[i + 1];\r\n if (next.getStr().startsWith(\"'\")\r\n && next.getRow() === current.getRow()\r\n && next.getCol() === current.getEnd().getCol()) {\r\n return current.getEnd();\r\n }\r\n }\r\n return undefined;\r\n }\r\n checkMethodCallParam(call) {\r\n const children = call.getChildren();\r\n {\r\n const first = children[0].getFirstToken();\r\n const second = children[1].getFirstToken();\r\n if (first.getRow() === second.getRow()\r\n && first.getCol() + 1 === second.getStart().getCol()) {\r\n return second.getStart();\r\n }\r\n }\r\n {\r\n const first = children[children.length - 2].getLastToken();\r\n const second = children[children.length - 1].getFirstToken();\r\n if (first.getRow() === second.getRow()\r\n && first.getEnd().getCol() === second.getStart().getCol()) {\r\n return second.getStart();\r\n }\r\n }\r\n return undefined;\r\n }\r\n}\r\nexports.ParserMissingSpace = ParserMissingSpace;\r\n//# sourceMappingURL=parser_missing_space.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/rules/parser_missing_space.js?");
|
|
11779
11779
|
|
|
11780
11780
|
/***/ }),
|
|
11781
11781
|
|
|
@@ -12021,6 +12021,17 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
|
|
|
12021
12021
|
|
|
12022
12022
|
/***/ }),
|
|
12023
12023
|
|
|
12024
|
+
/***/ "./node_modules/@abaplint/core/build/src/rules/static_call_via_instance.js":
|
|
12025
|
+
/*!*********************************************************************************!*\
|
|
12026
|
+
!*** ./node_modules/@abaplint/core/build/src/rules/static_call_via_instance.js ***!
|
|
12027
|
+
\*********************************************************************************/
|
|
12028
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
12029
|
+
|
|
12030
|
+
"use strict";
|
|
12031
|
+
eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.StaticCallViaInstance = exports.StaticCallViaInstanceConf = void 0;\r\n/* eslint-disable max-len */\r\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\r\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\r\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\r\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\r\nconst syntax_1 = __webpack_require__(/*! ../abap/5_syntax/syntax */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js\");\r\nconst _reference_1 = __webpack_require__(/*! ../abap/5_syntax/_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\r\nconst types_1 = __webpack_require__(/*! ../abap/types */ \"./node_modules/@abaplint/core/build/src/abap/types/index.js\");\r\nclass StaticCallViaInstanceConf extends _basic_rule_config_1.BasicRuleConfig {\r\n}\r\nexports.StaticCallViaInstanceConf = StaticCallViaInstanceConf;\r\nclass StaticCallViaInstance extends _abap_rule_1.ABAPRule {\r\n constructor() {\r\n super(...arguments);\r\n this.conf = new StaticCallViaInstanceConf();\r\n }\r\n getMetadata() {\r\n return {\r\n key: \"static_call_via_instance\",\r\n title: \"Static call via instance variable\",\r\n shortDescription: `Static method call via instance variable`,\r\n extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#dont-call-static-methods-through-instance-variables`,\r\n tags: [_irule_1.RuleTag.Styleguide],\r\n };\r\n }\r\n getConfig() {\r\n return this.conf;\r\n }\r\n setConfig(conf) {\r\n this.conf = conf;\r\n }\r\n runParsed(file, obj) {\r\n const issues = [];\r\n const staticMethodCalls = this.listMethodCalls(file.getFilename(), new syntax_1.SyntaxLogic(this.reg, obj).run().spaghetti.getTop());\r\n const tokens = file.getTokens();\r\n for (let i = 0; i < tokens.length - 1; i++) {\r\n const token = tokens[i];\r\n if (token.getStr() !== \"->\") {\r\n continue;\r\n }\r\n const next = tokens[i + 1];\r\n for (const s of staticMethodCalls) {\r\n if (s.equals(next.getStart())) {\r\n const message = \"Avoid calling static method via instance\";\r\n issue_1.Issue.atToken(file, token, message, this.getMetadata().key);\r\n break;\r\n }\r\n }\r\n }\r\n return issues;\r\n }\r\n listMethodCalls(filename, node) {\r\n const ret = [];\r\n for (const r of node.getData().references) {\r\n if (r.referenceType !== _reference_1.ReferenceType.MethodReference || r.position.getFilename() !== filename) {\r\n continue;\r\n }\r\n if (r.resolved instanceof types_1.MethodDefinition && r.resolved.isStatic() === true) {\r\n ret.push(r.position.getStart());\r\n }\r\n }\r\n for (const child of node.getChildren()) {\r\n ret.push(...this.listMethodCalls(filename, child));\r\n }\r\n return ret;\r\n }\r\n}\r\nexports.StaticCallViaInstance = StaticCallViaInstance;\r\n//# sourceMappingURL=static_call_via_instance.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/rules/static_call_via_instance.js?");
|
|
12032
|
+
|
|
12033
|
+
/***/ }),
|
|
12034
|
+
|
|
12024
12035
|
/***/ "./node_modules/@abaplint/core/build/src/rules/superclass_final.js":
|
|
12025
12036
|
/*!*************************************************************************!*\
|
|
12026
12037
|
!*** ./node_modules/@abaplint/core/build/src/rules/superclass_final.js ***!
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@abaplint/cli",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.82.0",
|
|
4
4
|
"description": "abaplint - Command Line Interface",
|
|
5
5
|
"bin": {
|
|
6
6
|
"abaplint": "./abaplint"
|
|
@@ -37,24 +37,24 @@
|
|
|
37
37
|
},
|
|
38
38
|
"homepage": "https://abaplint.org",
|
|
39
39
|
"devDependencies": {
|
|
40
|
-
"@abaplint/core": "^2.
|
|
40
|
+
"@abaplint/core": "^2.82.0",
|
|
41
41
|
"@types/chai": "^4.2.22",
|
|
42
42
|
"@types/glob": "^7.2.0",
|
|
43
43
|
"@types/minimist": "^1.2.2",
|
|
44
44
|
"@types/mocha": "^9.0.0",
|
|
45
|
-
"@types/node": "^16.11.
|
|
45
|
+
"@types/node": "^16.11.10",
|
|
46
46
|
"@types/progress": "^2.0.5",
|
|
47
47
|
"chai": "^4.3.4",
|
|
48
48
|
"chalk": "^4.1.2",
|
|
49
|
-
"eslint": "^8.
|
|
49
|
+
"eslint": "^8.3.0",
|
|
50
50
|
"glob": "^7.2.0",
|
|
51
51
|
"json5": "^2.2.0",
|
|
52
|
-
"memfs": "^3.
|
|
52
|
+
"memfs": "^3.4.0",
|
|
53
53
|
"minimist": "^1.2.5",
|
|
54
54
|
"mocha": "^9.1.3",
|
|
55
55
|
"progress": "^2.0.3",
|
|
56
56
|
"typescript": "^4.5.2",
|
|
57
|
-
"webpack": "^5.64.
|
|
57
|
+
"webpack": "^5.64.3",
|
|
58
58
|
"webpack-cli": "^4.9.1",
|
|
59
59
|
"xml-js": "^1.6.11"
|
|
60
60
|
},
|