| // Copyright (c) 2026, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| import 'package:analyzer/dart/analysis/utilities.dart'; |
| import 'package:test/test.dart'; |
| import 'package:test_reflective_loader/test_reflective_loader.dart'; |
| |
| import '../../../tool/lsp_spec/codegen_dart.dart'; |
| import '../../../tool/lsp_spec/meta_model.dart'; |
| |
| void main() { |
| defineReflectiveSuite(() { |
| defineReflectiveTests(CodegenTest); |
| }); |
| } |
| |
| @reflectiveTest |
| class CodegenTest { |
| void test_enumMembersNamedNew() { |
| var generatedCode = generateDartForTypes([ |
| LspEnum( |
| name: 'x', |
| typeOfValues: TypeReference.int, |
| constants: [ |
| Constant(name: 'new', type: TypeReference.string, value: '1'), |
| ], |
| ), |
| ]); |
| |
| // Verify the generated code parses with no errors. |
| parseString(content: generatedCode); |
| |
| // Verify some expected code. |
| expect(generatedCode, contains('static const new_ = x(1)')); |
| } |
| |
| void test_fieldsNamedDefault() { |
| var generatedCode = generateDartForTypes([ |
| Interface( |
| name: 'x', |
| members: [ |
| Field( |
| name: 'default', |
| type: TypeReference.string, |
| allowsNull: false, |
| allowsUndefined: true, |
| ), |
| ], |
| ), |
| ]); |
| |
| // Verify the generated code parses with no errors. |
| parseString(content: generatedCode); |
| |
| // Verify some expected code. |
| expect(generatedCode, contains('final String? defaultValue')); |
| expect(generatedCode, contains('this.defaultValue')); |
| expect(generatedCode, contains('defaultValue.hashCode')); |
| |
| // JSON still uses the original protocol name. |
| expect(generatedCode, contains("result['default'] = defaultValue")); |
| expect(generatedCode, contains("defaultValueJson = json['default']")); |
| } |
| } |