| // 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 'meta_model.dart'; | |
| /// Helper to create a field. | |
| Field field( | |
| String name, { | |
| String? comment, | |
| required String type, | |
| bool array = false, | |
| bool literal = false, | |
| bool canBeNull = false, | |
| bool canBeUndefined = false, | |
| }) { | |
| var fieldType = array | |
| ? ArrayType(TypeReference(type)) | |
| : literal | |
| ? LiteralType(TypeReference.string, type) | |
| : TypeReference(type); | |
| return Field( | |
| name: name, | |
| comment: comment, | |
| type: fieldType, | |
| allowsNull: canBeNull, | |
| allowsUndefined: canBeUndefined, | |
| ); | |
| } | |
| /// Helper to create an interface type. | |
| Interface interface( | |
| String name, | |
| List<Member> fields, { | |
| String? baseType, | |
| List<String>? baseTypes, | |
| String? comment, | |
| bool abstract = false, | |
| bool sealed = false, | |
| }) { | |
| return Interface( | |
| name: name, | |
| abstract: abstract, | |
| sealed: sealed, | |
| comment: comment, | |
| baseTypes: [ | |
| if (baseType != null) TypeReference(baseType), | |
| ...?baseTypes?.map(TypeReference.new), | |
| ], | |
| members: fields, | |
| ); | |
| } |