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
|
2017-07-05 22:44:13 +00:00
|
|
|
FileSpan get span {
|
|
|
|
var out = ELLIPSIS.span.expand(NAME.span);
|
2017-07-04 16:46:01 +00:00
|
|
|
if (directives.isEmpty) return out;
|
2017-07-05 22:44:13 +00:00
|
|
|
return directives.fold<FileSpan>(out, (o, d) => o.expand(d.span));
|
2017-01-22 23:15:53 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
String toSource() {
|
|
|
|
return '...${NAME.text}' + directives.map((d) => d.toSource()).join();
|
|
|
|
}
|
|
|
|
}
|