blob: 03aea23a51a906a73ca82dd1fe1c3098b2e7f368 [file] [log] [blame]
// Copyright (c) 2017, 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:meta/meta.dart';
import 'base.dart';
import 'specs/annotation.dart';
import 'specs/class.dart';
import 'specs/constructor.dart';
import 'specs/directive.dart';
import 'specs/field.dart';
import 'specs/file.dart';
import 'specs/method.dart';
import 'specs/reference.dart';
import 'specs/type_reference.dart';
@optionalTypeArgs
abstract class SpecVisitor<T> {
const SpecVisitor._();
T visitAnnotation(Annotation spec, [T context]);
T visitClass(Class spec, [T context]);
T visitConstructor(Constructor spec, String clazz, [T context]);
T visitDirective(Directive spec, [T context]);
T visitField(Field spec, [T context]);
T visitFile(File spec, [T context]);
T visitMethod(Method spec, [T context]);
T visitReference(Reference spec, [T context]);
T visitSpec(Spec spec, [T context]);
T visitType(TypeReference spec, [T context]);
T visitTypeParameters(Iterable<TypeReference> specs, [T context]);
}