@abaplint/core 2.102.58 → 2.102.59
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/src/abap/5_syntax/expressions/select.js +4 -0
- package/build/src/abap/5_syntax/expressions/sql_order_by.js +15 -0
- package/build/src/abap/types/interface_definition.js +3 -0
- package/build/src/objects/rename/rename_message_class.js +40 -0
- package/build/src/objects/rename/renamer.js +3 -0
- package/build/src/registry.js +1 -1
- package/package.json +2 -2
|
@@ -10,6 +10,7 @@ const sql_for_all_entries_1 = require("./sql_for_all_entries");
|
|
|
10
10
|
const _scope_type_1 = require("../_scope_type");
|
|
11
11
|
const sql_source_1 = require("./sql_source");
|
|
12
12
|
const sql_compare_1 = require("./sql_compare");
|
|
13
|
+
const sql_order_by_1 = require("./sql_order_by");
|
|
13
14
|
const isSimple = /^\w+$/;
|
|
14
15
|
class Select {
|
|
15
16
|
runSyntax(node, scope, filename, skipImplicitInto = false) {
|
|
@@ -63,6 +64,9 @@ class Select {
|
|
|
63
64
|
for (const s of node.findAllExpressions(Expressions.SQLCompare)) {
|
|
64
65
|
new sql_compare_1.SQLCompare().runSyntax(s, scope, filename, dbSources);
|
|
65
66
|
}
|
|
67
|
+
for (const s of node.findDirectExpressions(Expressions.SQLOrderBy)) {
|
|
68
|
+
new sql_order_by_1.SQLOrderBy().runSyntax(s, scope, filename);
|
|
69
|
+
}
|
|
66
70
|
if (scope.getType() === _scope_type_1.ScopeType.OpenSQL) {
|
|
67
71
|
scope.pop(node.getLastToken().getEnd());
|
|
68
72
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SQLOrderBy = void 0;
|
|
4
|
+
const Expressions = require("../../2_statements/expressions");
|
|
5
|
+
const dynamic_1 = require("./dynamic");
|
|
6
|
+
class SQLOrderBy {
|
|
7
|
+
runSyntax(node, scope, filename) {
|
|
8
|
+
const dyn = node.findDirectExpression(Expressions.Dynamic);
|
|
9
|
+
if (dyn) {
|
|
10
|
+
new dynamic_1.Dynamic().runSyntax(dyn, scope, filename);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.SQLOrderBy = SQLOrderBy;
|
|
15
|
+
//# sourceMappingURL=sql_order_by.js.map
|
|
@@ -73,6 +73,9 @@ class InterfaceDefinition extends _identifier_1.Identifier {
|
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
75
|
this.methodDefinitions = new method_definitions_1.MethodDefinitions(this.node, this.filename, scope);
|
|
76
|
+
if (this.methodDefinitions.getByName("CONSTRUCTOR") !== undefined) {
|
|
77
|
+
throw new Error("Interfaces cannot have constructor methods");
|
|
78
|
+
}
|
|
76
79
|
const events = this.node.findAllStatements(Statements.Events);
|
|
77
80
|
for (const e of events) {
|
|
78
81
|
this.events.push(new event_definition_1.EventDefinition(e, visibility_1.Visibility.Public, this.filename, scope));
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RenameMessageClass = void 0;
|
|
4
|
+
const vscode_languageserver_types_1 = require("vscode-languageserver-types");
|
|
5
|
+
const __1 = require("..");
|
|
6
|
+
const renamer_helper_1 = require("./renamer_helper");
|
|
7
|
+
class RenameMessageClass {
|
|
8
|
+
constructor(reg) {
|
|
9
|
+
this.reg = reg;
|
|
10
|
+
}
|
|
11
|
+
buildEdits(obj, oldName, newName) {
|
|
12
|
+
if (!(obj instanceof __1.MessageClass)) {
|
|
13
|
+
throw new Error("RenameMessageClass, not a message class");
|
|
14
|
+
}
|
|
15
|
+
let changes = [];
|
|
16
|
+
const helper = new renamer_helper_1.RenamerHelper(this.reg);
|
|
17
|
+
changes = changes.concat(helper.buildXMLFileEdits(obj, "ARBGB", oldName, newName));
|
|
18
|
+
changes = changes.concat(helper.renameFiles(obj, oldName, newName));
|
|
19
|
+
for (const message of obj.getMessages()) {
|
|
20
|
+
for (const ref of this.reg.getMSAGReferences().listByMessage(obj.getName(), message.getNumber())) {
|
|
21
|
+
const file = this.reg.getFileByName(ref.filename);
|
|
22
|
+
if (file === undefined) {
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
const rows = file.getRawRows();
|
|
26
|
+
const i = ref.token.getRow() - 1;
|
|
27
|
+
const index = rows[i].indexOf(oldName.toLowerCase());
|
|
28
|
+
if (index >= 0) {
|
|
29
|
+
const range = vscode_languageserver_types_1.Range.create(i, index, i, index + oldName.length);
|
|
30
|
+
changes.push(vscode_languageserver_types_1.TextDocumentEdit.create({ uri: file.getFilename(), version: 1 }, [vscode_languageserver_types_1.TextEdit.replace(range, newName.toLowerCase())]));
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
documentChanges: changes,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.RenameMessageClass = RenameMessageClass;
|
|
40
|
+
//# sourceMappingURL=rename_message_class.js.map
|
|
@@ -9,6 +9,7 @@ const rename_global_class_1 = require("./rename_global_class");
|
|
|
9
9
|
const rename_global_interface_1 = require("./rename_global_interface");
|
|
10
10
|
const rename_table_1 = require("./rename_table");
|
|
11
11
|
const rename_table_type_1 = require("./rename_table_type");
|
|
12
|
+
const rename_message_class_1 = require("./rename_message_class");
|
|
12
13
|
class Renamer {
|
|
13
14
|
constructor(reg) {
|
|
14
15
|
this.reg = reg;
|
|
@@ -56,6 +57,8 @@ class Renamer {
|
|
|
56
57
|
return new rename_table_type_1.RenameTableType(this.reg);
|
|
57
58
|
case "INTF":
|
|
58
59
|
return new rename_global_interface_1.RenameGlobalInterface(this.reg);
|
|
60
|
+
case "MSAG":
|
|
61
|
+
return new rename_message_class_1.RenameMessageClass(this.reg);
|
|
59
62
|
default:
|
|
60
63
|
throw new Error("Renaming of " + type + " not yet supported");
|
|
61
64
|
}
|
package/build/src/registry.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@abaplint/core",
|
|
3
|
-
"version": "2.102.
|
|
3
|
+
"version": "2.102.59",
|
|
4
4
|
"description": "abaplint - Core API",
|
|
5
5
|
"main": "build/src/index.js",
|
|
6
6
|
"typings": "build/abaplint.d.ts",
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"mocha": "^10.2.0",
|
|
60
60
|
"c8": "^8.0.1",
|
|
61
61
|
"source-map-support": "^0.5.21",
|
|
62
|
-
"ts-json-schema-generator": "^1.
|
|
62
|
+
"ts-json-schema-generator": "^1.4.0",
|
|
63
63
|
"typescript": "^5.2.2"
|
|
64
64
|
},
|
|
65
65
|
"dependencies": {
|