2a98f98098
Change-Id: Ief30fb79b2afcbb3f50d9127eb622fac362b07b1 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/340141 Commit-Queue: Devon Carew <devoncarew@google.com> Auto-Submit: Parker Lougheed <parlough@gmail.com> Reviewed-by: Devon Carew <devoncarew@google.com> Reviewed-by: Bob Nystrom <rnystrom@google.com>
54 lines
1.4 KiB
Dart
54 lines
1.4 KiB
Dart
// 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:analyzer/dart/ast/ast.dart';
|
|
import 'package:scrape/scrape.dart';
|
|
|
|
void main(List<String> arguments) {
|
|
Scrape()
|
|
..addHistogram('Statements')
|
|
..addVisitor(ControlFlowVisitor.new)
|
|
..runCommandLine(arguments);
|
|
}
|
|
|
|
class ControlFlowVisitor extends ScrapeVisitor {
|
|
@override
|
|
void visitDoStatement(DoStatement node) {
|
|
record('Statements', 'do while');
|
|
super.visitDoStatement(node);
|
|
}
|
|
|
|
@override
|
|
void visitForStatement(ForStatement node) {
|
|
if (node.forLoopParts is ForEachParts) {
|
|
record('Statements', 'for in');
|
|
} else {
|
|
record('Statements', 'for ;;');
|
|
}
|
|
super.visitForStatement(node);
|
|
}
|
|
|
|
@override
|
|
void visitIfStatement(IfStatement node) {
|
|
if (node.elseStatement != null) {
|
|
record('Statements', 'if else');
|
|
} else {
|
|
record('Statements', 'if');
|
|
}
|
|
super.visitIfStatement(node);
|
|
}
|
|
|
|
@override
|
|
void visitSwitchStatement(SwitchStatement node) {
|
|
record('Statements', 'switch');
|
|
super.visitSwitchStatement(node);
|
|
}
|
|
|
|
@override
|
|
void visitWhileStatement(WhileStatement node) {
|
|
record('Statements', 'while');
|
|
super.visitWhileStatement(node);
|
|
}
|
|
}
|