// 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 'visitors.dart';

abstract class Spec {
  R accept<R>(SpecVisitor<R> visitor, [R context]);
}

/// Returns a generic [Spec] that is lazily generated when visited.
Spec lazySpec(Spec Function() generate) => _LazySpec(generate);

class _LazySpec implements Spec {
  final Spec Function() generate;

  const _LazySpec(this.generate);

  @override
  R accept<R>(SpecVisitor<R> visitor, [R context]) {
    return generate().accept(visitor, context);
  }
}
