@abaplint/cli 2.120.25 → 2.120.26

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.
Files changed (2) hide show
  1. package/build/cli.js +66 -33
  2. package/package.json +2 -2
package/build/cli.js CHANGED
@@ -29103,6 +29103,51 @@ exports.BasicTypes = BasicTypes;
29103
29103
 
29104
29104
  /***/ },
29105
29105
 
29106
+ /***/ "../core/build/src/abap/5_syntax/expressions/_check_database_fields.js"
29107
+ /*!*****************************************************************************!*\
29108
+ !*** ../core/build/src/abap/5_syntax/expressions/_check_database_fields.js ***!
29109
+ \*****************************************************************************/
29110
+ (__unused_webpack_module, exports, __webpack_require__) {
29111
+
29112
+ "use strict";
29113
+
29114
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
29115
+ exports.checkDatabaseFields = checkDatabaseFields;
29116
+ const basic_1 = __webpack_require__(/*! ../../types/basic */ "../core/build/src/abap/types/basic/index.js");
29117
+ const _syntax_input_1 = __webpack_require__(/*! ../_syntax_input */ "../core/build/src/abap/5_syntax/_syntax_input.js");
29118
+ function checkDatabaseFields(fields, dbSources, input, token) {
29119
+ if (dbSources.length > 1) {
29120
+ return;
29121
+ }
29122
+ const first = dbSources[0];
29123
+ if (first === undefined) {
29124
+ // then its voided
29125
+ return;
29126
+ }
29127
+ const type = first.parseType(input.scope.getRegistry());
29128
+ if (type instanceof basic_1.VoidType || type instanceof basic_1.UnknownType) {
29129
+ return;
29130
+ }
29131
+ if (!(type instanceof basic_1.StructureType)) {
29132
+ const message = "checkFields, expected structure, " + type.constructor.name;
29133
+ input.issues.push((0, _syntax_input_1.syntaxIssue)(input, token, message));
29134
+ return;
29135
+ }
29136
+ for (const field of fields) {
29137
+ if (field === "*") {
29138
+ continue;
29139
+ }
29140
+ if (/^\w+$/.test(field) && type.getComponentByName(field) === undefined) {
29141
+ const message = `checkFields, field ${field} not found`;
29142
+ input.issues.push((0, _syntax_input_1.syntaxIssue)(input, token, message));
29143
+ return;
29144
+ }
29145
+ }
29146
+ }
29147
+ //# sourceMappingURL=_check_database_fields.js.map
29148
+
29149
+ /***/ },
29150
+
29106
29151
  /***/ "../core/build/src/abap/5_syntax/expressions/_check_offset_length.js"
29107
29152
  /*!***************************************************************************!*\
29108
29153
  !*** ../core/build/src/abap/5_syntax/expressions/_check_offset_length.js ***!
@@ -33752,6 +33797,7 @@ const dynamic_1 = __webpack_require__(/*! ./dynamic */ "../core/build/src/abap/5
33752
33797
  const _reference_1 = __webpack_require__(/*! ../_reference */ "../core/build/src/abap/5_syntax/_reference.js");
33753
33798
  const _syntax_input_1 = __webpack_require__(/*! ../_syntax_input */ "../core/build/src/abap/5_syntax/_syntax_input.js");
33754
33799
  const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
33800
+ const _check_database_fields_1 = __webpack_require__(/*! ./_check_database_fields */ "../core/build/src/abap/5_syntax/expressions/_check_database_fields.js");
33755
33801
  const isSimple = /^\w+$/;
33756
33802
  class Select {
33757
33803
  static runSyntax(node, input, skipImplicitInto = false, selectLoop = false) {
@@ -33776,7 +33822,7 @@ class Select {
33776
33822
  input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
33777
33823
  return;
33778
33824
  }
33779
- this.checkFields(fields, dbSources, input, node);
33825
+ (0, _check_database_fields_1.checkDatabaseFields)(fields.map(field => field.code), dbSources, input, node.getFirstToken());
33780
33826
  const intoExpression = this.handleInto(node, input, fields, dbSources);
33781
33827
  const fae = node.findDirectExpression(Expressions.SQLForAllEntries);
33782
33828
  if (fae) {
@@ -34003,35 +34049,6 @@ class Select {
34003
34049
  }
34004
34050
  return undefined;
34005
34051
  }
34006
- static checkFields(fields, dbSources, input, node) {
34007
- if (dbSources.length > 1) {
34008
- return;
34009
- }
34010
- const first = dbSources[0];
34011
- if (first === undefined) {
34012
- // then its voided
34013
- return;
34014
- }
34015
- const type = first.parseType(input.scope.getRegistry());
34016
- if (type instanceof basic_1.VoidType || type instanceof basic_1.UnknownType) {
34017
- return;
34018
- }
34019
- if (!(type instanceof basic_1.StructureType)) {
34020
- const message = "checkFields, expected structure, " + type.constructor.name;
34021
- input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
34022
- return;
34023
- }
34024
- for (const field of fields) {
34025
- if (field.code === "*") {
34026
- continue;
34027
- }
34028
- if (isSimple.test(field.code) && type.getComponentByName(field.code) === undefined) {
34029
- const message = `checkFields, field ${field.code} not found`;
34030
- input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
34031
- return;
34032
- }
34033
- }
34034
- }
34035
34052
  static countResultType(scope) {
34036
34053
  if ((0, version_1.releaseAtLeast)(scope.getRelease(), version_1.Release.v750)
34037
34054
  || scope.getOpenABAP()
@@ -39384,6 +39401,7 @@ const Expressions = __importStar(__webpack_require__(/*! ../../2_statements/expr
39384
39401
  const source_1 = __webpack_require__(/*! ../expressions/source */ "../core/build/src/abap/5_syntax/expressions/source.js");
39385
39402
  const dynamic_1 = __webpack_require__(/*! ../expressions/dynamic */ "../core/build/src/abap/5_syntax/expressions/dynamic.js");
39386
39403
  const database_table_1 = __webpack_require__(/*! ../expressions/database_table */ "../core/build/src/abap/5_syntax/expressions/database_table.js");
39404
+ const _check_database_fields_1 = __webpack_require__(/*! ../expressions/_check_database_fields */ "../core/build/src/abap/5_syntax/expressions/_check_database_fields.js");
39387
39405
  class DeleteDatabase {
39388
39406
  runSyntax(node, input) {
39389
39407
  for (const s of node.findAllExpressions(Expressions.Source)) {
@@ -39397,7 +39415,14 @@ class DeleteDatabase {
39397
39415
  }
39398
39416
  const dbtab = node.findFirstExpression(Expressions.DatabaseTable);
39399
39417
  if (dbtab !== undefined) {
39400
- database_table_1.DatabaseTable.runSyntax(dbtab, input);
39418
+ const dbSource = database_table_1.DatabaseTable.runSyntax(dbtab, input);
39419
+ const fields = node.findAllExpressions(Expressions.SQLCompare)
39420
+ .map(compare => { var _a; return (_a = compare.findDirectExpression(Expressions.SQLFieldName)) === null || _a === void 0 ? void 0 : _a.concatTokens().toUpperCase(); })
39421
+ .filter(field => field !== undefined);
39422
+ for (const orderBy of node.findAllExpressions(Expressions.SQLOrderBy)) {
39423
+ fields.push(...orderBy.findAllExpressions(Expressions.SQLFieldName).map(field => field.concatTokens().toUpperCase()));
39424
+ }
39425
+ (0, _check_database_fields_1.checkDatabaseFields)(fields, [dbSource], input, node.getFirstToken());
39401
39426
  }
39402
39427
  }
39403
39428
  }
@@ -46342,11 +46367,19 @@ const _typed_identifier_1 = __webpack_require__(/*! ../../types/_typed_identifie
46342
46367
  const identifier_1 = __webpack_require__(/*! ../../1_lexer/tokens/identifier */ "../core/build/src/abap/1_lexer/tokens/identifier.js");
46343
46368
  const database_table_1 = __webpack_require__(/*! ../expressions/database_table */ "../core/build/src/abap/5_syntax/expressions/database_table.js");
46344
46369
  const dynamic_1 = __webpack_require__(/*! ../expressions/dynamic */ "../core/build/src/abap/5_syntax/expressions/dynamic.js");
46370
+ const _check_database_fields_1 = __webpack_require__(/*! ../expressions/_check_database_fields */ "../core/build/src/abap/5_syntax/expressions/_check_database_fields.js");
46345
46371
  class UpdateDatabase {
46346
46372
  runSyntax(node, input) {
46347
46373
  const dbtab = node.findFirstExpression(Expressions.DatabaseTable);
46348
46374
  if (dbtab !== undefined) {
46349
- database_table_1.DatabaseTable.runSyntax(dbtab, input);
46375
+ const dbSource = database_table_1.DatabaseTable.runSyntax(dbtab, input);
46376
+ const fields = node.findAllExpressions(Expressions.SQLFieldAndValue)
46377
+ .flatMap(fieldAndValue => fieldAndValue.findDirectExpressions(Expressions.SQLFieldName))
46378
+ .map(field => field.concatTokens().toUpperCase());
46379
+ fields.push(...node.findAllExpressions(Expressions.SQLCompare)
46380
+ .map(compare => { var _a; return (_a = compare.findDirectExpression(Expressions.SQLFieldName)) === null || _a === void 0 ? void 0 : _a.concatTokens().toUpperCase(); })
46381
+ .filter(field => field !== undefined));
46382
+ (0, _check_database_fields_1.checkDatabaseFields)(fields, [dbSource], input, node.getFirstToken());
46350
46383
  }
46351
46384
  const tableName = node.findDirectExpression(Expressions.DatabaseTable);
46352
46385
  const tokenName = tableName === null || tableName === void 0 ? void 0 : tableName.getFirstToken();
@@ -69718,7 +69751,7 @@ class Registry {
69718
69751
  }
69719
69752
  static abaplintVersion() {
69720
69753
  // magic, see build script "version.js"
69721
- return "2.120.25";
69754
+ return "2.120.26";
69722
69755
  }
69723
69756
  getDDICReferences() {
69724
69757
  return this.ddicReferences;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/cli",
3
- "version": "2.120.25",
3
+ "version": "2.120.26",
4
4
  "description": "abaplint - Command Line Interface",
5
5
  "funding": "https://github.com/sponsors/larshp",
6
6
  "bin": {
@@ -39,7 +39,7 @@
39
39
  },
40
40
  "homepage": "https://abaplint.org",
41
41
  "devDependencies": {
42
- "@abaplint/core": "^2.120.25",
42
+ "@abaplint/core": "^2.120.26",
43
43
  "@types/chai": "^4.3.20",
44
44
  "@types/minimist": "^1.2.5",
45
45
  "@types/mocha": "^10.0.10",