platform/lib/src/language/ast/fragment_spread.dart

26 lines
638 B
Dart
Raw Normal View History

2017-01-22 23:15:53 +00:00
import '../token.dart';
import 'directive.dart';
import 'node.dart';
import 'package:source_span/source_span.dart';
class FragmentSpreadContext extends Node {
final Token ELLIPSIS, NAME;
final List<DirectiveContext> directives = [];
FragmentSpreadContext(this.ELLIPSIS, this.NAME);
2017-07-04 16:46:01 +00:00
String get name => NAME.text;
2017-01-22 23:15:53 +00:00
@override
SourceSpan get span {
2017-07-04 16:46:01 +00:00
var out = ELLIPSIS.span.union(NAME.span);
if (directives.isEmpty) return out;
return directives.fold<SourceSpan>(out, (o, d) => o.union(d.span));
2017-01-22 23:15:53 +00:00
}
@override
String toSource() {
return '...${NAME.text}' + directives.map((d) => d.toSource()).join();
}
}