// Copyright (c) 2020, 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:built_collection/built_collection.dart'; import 'package:built_value/built_value.dart'; import 'package:meta/meta.dart'; import '../base.dart'; import '../mixins/annotations.dart'; import '../mixins/dartdoc.dart'; import '../mixins/generics.dart'; import '../visitors.dart'; import 'expression.dart'; import 'field.dart'; import 'method.dart'; import 'reference.dart'; part 'extension.g.dart'; @immutable abstract class Extension extends Object with HasAnnotations, HasDartDocs, HasGenerics implements Built, Spec { factory Extension([void Function(ExtensionBuilder b) updates]) = _$Extension; Extension._(); @override BuiltList get annotations; @override BuiltList get docs; Reference? get on; @override BuiltList get types; BuiltList get methods; BuiltList get fields; /// Name of the extension - optional. String? get name; @override R accept(SpecVisitor visitor, [R? context]) => visitor.visitExtension(this, context); } abstract class ExtensionBuilder extends Object with HasAnnotationsBuilder, HasDartDocsBuilder, HasGenericsBuilder implements Builder { factory ExtensionBuilder() = _$ExtensionBuilder; ExtensionBuilder._(); @override ListBuilder annotations = ListBuilder(); @override ListBuilder docs = ListBuilder(); Reference? on; @override ListBuilder types = ListBuilder(); ListBuilder methods = ListBuilder(); ListBuilder fields = ListBuilder(); /// Name of the extension - optional. String? name; }