Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(605)

Unified Diff: pkg/fletchc/lib/src/verbs/infrastructure.dart

Issue 1659163007: Rename fletch -> dartino (Closed) Base URL: https://github.com/dartino/sdk.git@master
Patch Set: address comments Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/fletchc/lib/src/verbs/help_verb.dart ('k') | pkg/fletchc/lib/src/verbs/options.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/fletchc/lib/src/verbs/infrastructure.dart
diff --git a/pkg/fletchc/lib/src/verbs/infrastructure.dart b/pkg/fletchc/lib/src/verbs/infrastructure.dart
deleted file mode 100644
index 5a8b574901bf84044fbb5ca6ab86c44a42c02485..0000000000000000000000000000000000000000
--- a/pkg/fletchc/lib/src/verbs/infrastructure.dart
+++ /dev/null
@@ -1,460 +0,0 @@
-// Copyright (c) 2015, the Dartino 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.md file.
-
-library fletchc.verbs.implementation;
-
-import 'dart:async' show
- Future,
- StreamIterator;
-
-export 'dart:async' show
- Future,
- StreamIterator;
-
-// Don't export this.
-import 'package:compiler/src/filenames.dart' show
- appendSlash;
-
-// Don't export most of these.
-import '../hub/sentence_parser.dart' show
- ErrorTarget,
- NamedTarget,
- Preposition,
- PrepositionKind,
- Sentence,
- Target,
- TargetKind,
- Verb;
-
-export '../hub/sentence_parser.dart' show
- TargetKind;
-
-import '../diagnostic.dart' show
- DiagnosticKind,
- throwFatalError;
-
-export '../diagnostic.dart' show
- DiagnosticKind,
- throwFatalError;
-
-import '../hub/client_commands.dart' show
- CommandSender,
- ClientCommand;
-
-export '../hub/client_commands.dart' show
- CommandSender,
- ClientCommand;
-
-import '../hub/session_manager.dart' show
- FletchCompiler,
- FletchDelta,
- IncrementalCompiler,
- WorkerConnection,
- Session,
- SessionState,
- UserSession,
- currentSession;
-
-export '../hub/session_manager.dart' show
- FletchCompiler,
- FletchDelta,
- IncrementalCompiler,
- WorkerConnection,
- Session,
- SessionState,
- UserSession,
- currentSession;
-
-export '../diagnostic.dart' show
- DiagnosticKind,
- throwFatalError;
-
-import '../hub/session_manager.dart' show
- SessionState,
- UserSession,
- createSession;
-
-export '../hub/session_manager.dart' show
- SessionState,
- UserSession,
- createSession;
-
-import '../hub/hub_main.dart' show
- ClientConnection,
- IsolatePool;
-
-export '../hub/hub_main.dart' show
- ClientConnection,
- IsolatePool;
-
-import '../hub/session_manager.dart' show
- lookupSession; // Don't export this.
-
-import 'actions.dart' show
- Action;
-
-export 'actions.dart' show
- Action;
-
-import 'options.dart' show
- Options;
-
-export 'options.dart' show
- Options;
-
-import 'documentation.dart' show
- helpDocumentation;
-
-import '../guess_configuration.dart' show
- fletchVersion;
-
-void reportErroneousTarget(ErrorTarget target) {
- throwFatalError(target.errorKind, userInput: target.userInput);
-}
-
-AnalyzedSentence helpSentence(String message) {
- Future<int> printHelp(_,__) async {
- print(message);
- return 0;
- }
- Action contextHelp = new Action(printHelp, null);
- return new AnalyzedSentence(
- new Verb("?", contextHelp), null, null, null, null, null, null,
- null, null, null, null);
-}
-
-AnalyzedSentence analyzeSentence(Sentence sentence, Options options) {
- // Check the sentence's version matches the persistent process' version.
- if (sentence.version != null && sentence.version != fletchVersion) {
- throwFatalError(
- DiagnosticKind.compilerVersionMismatch,
- userInput: fletchVersion,
- additionalUserInput: sentence.version);
- }
- if (options != null && options.version) {
- return helpSentence(fletchVersion);
- }
- if (sentence.verb.isErroneous) {
- sentence.verb.action.perform(null, null);
- }
-
- sentence.targets.where((Target t) => t.isErroneous)
- .forEach(reportErroneousTarget);
- sentence.prepositions.map((p) => p.target).where((Target t) => t.isErroneous)
- .forEach(reportErroneousTarget);
-
- Uri base = Uri.base;
- if (sentence.currentDirectory != null) {
- base = fileUri(appendSlash(sentence.currentDirectory), base);
- }
- Verb verb = sentence.verb;
- Action action = verb.action;
- List<String> trailing = sentence.trailing;
-
- for (Target target in sentence.targets) {
- if (target.kind == TargetKind.HELP) {
- return helpSentence(action.documentation);
- }
- }
-
- NamedTarget inSession;
- Uri toUri;
- Uri withUri;
-
- /// Validates a preposition of kind `in`. For now, the only possible legal
- /// target is of kind `session`. Store such as session in [inSession].
- void checkInTarget(Preposition preposition) {
- assert(preposition.kind == PrepositionKind.IN);
- if (preposition.target.kind == TargetKind.SESSION) {
- if (inSession != null) {
- throwFatalError(
- DiagnosticKind.duplicatedIn, preposition: preposition);
- }
- inSession = preposition.target;
- if (!action.requiresSession) {
- throwFatalError(
- DiagnosticKind.verbRequiresNoSession,
- verb: verb, sessionName: inSession.name);
- }
- } else {
- throwFatalError(
- DiagnosticKind.cantPerformVerbIn,
- verb: verb, target: preposition.target);
- }
- }
-
- /// Validates a preposition of kind `to`. For now, the only possible legal
- /// target is of kind `file`. Store such a file in [toUri].
- void checkToTarget(Preposition preposition) {
- assert(preposition.kind == PrepositionKind.TO);
- if (preposition.target.kind == TargetKind.FILE) {
- if (toUri != null) {
- throwFatalError(
- DiagnosticKind.duplicatedTo, preposition: preposition);
- }
- NamedTarget target = preposition.target;
- toUri = fileUri(target.name, base);
- if (!action.requiresToUri) {
- throwFatalError(
- DiagnosticKind.verbRequiresNoToFile,
- verb: verb, userInput: target.name);
- }
- } else {
- throwFatalError(
- DiagnosticKind.cantPerformVerbTo,
- verb: verb, target: preposition.target);
- }
- }
-
- /// Validates a preposition of kind `with`. For now, the only possible legal
- /// target is of kind `file`. Store such a file in [withUri].
- void checkWithTarget(Preposition preposition) {
- assert(preposition.kind == PrepositionKind.WITH);
- if (preposition.target.kind == TargetKind.FILE) {
- if (withUri != null) {
- throwFatalError(
- DiagnosticKind.duplicatedWith, preposition: preposition);
- }
- NamedTarget target = preposition.target;
- withUri = fileUri(target.name, base);
- if (!action.supportsWithUri) {
- throwFatalError(
- DiagnosticKind.verbRequiresNoWithFile,
- verb: verb, userInput: target.name);
- }
- } else {
- throwFatalError(
- DiagnosticKind.cantPerformVerbWith,
- verb: verb, target: preposition.target);
- }
- }
-
- Target target;
- Target secondaryTarget;
- Iterator<Target> targets = sentence.targets.iterator;
- if (targets.moveNext()) {
- target = targets.current;
- }
- if (targets.moveNext()) {
- secondaryTarget = targets.current;
- }
- while (targets.moveNext()) {
- throwFatalError(
- DiagnosticKind.verbDoesNotSupportTarget, verb: verb, target: target);
- }
- if (secondaryTarget != null) {
- if (secondaryTarget.kind == TargetKind.FILE) {
- NamedTarget target = secondaryTarget;
- if (action.requiresToUri) {
- toUri = fileUri(target.name, base);
- } else {
- throwFatalError(
- DiagnosticKind.verbRequiresNoToFile,
- verb: verb, userInput: target.name);
- }
- } else {
- throwFatalError(
- DiagnosticKind.cantPerformVerbTo,
- verb: verb, target: secondaryTarget);
- }
- }
-
- for (Preposition preposition in sentence.prepositions) {
- switch (preposition.kind) {
- case PrepositionKind.IN:
- checkInTarget(preposition);
- break;
-
- case PrepositionKind.TO:
- checkToTarget(preposition);
- break;
-
- case PrepositionKind.WITH:
- checkWithTarget(preposition);
- break;
- }
- }
-
- if (action.requiresToUri && toUri == null) {
- throwFatalError(DiagnosticKind.missingToFile);
- }
-
- if (!action.allowsTrailing) {
- if (trailing != null) {
- throwFatalError(
- DiagnosticKind.extraArguments, userInput: trailing.join(' '));
- }
- }
-
- TargetKind requiredTarget = action.requiredTarget;
-
- if (target != null &&
- requiredTarget == null &&
- action.supportedTargets == null) {
- throwFatalError(
- DiagnosticKind.verbDoesntSupportTarget, verb: verb, target: target);
- }
-
- if (action.requiresTarget) {
- if (target == null) {
- switch (requiredTarget) {
- case TargetKind.TCP_SOCKET:
- throwFatalError(DiagnosticKind.noTcpSocketTarget);
- break;
-
- case TargetKind.FILE:
- throwFatalError(DiagnosticKind.noFileTarget);
- break;
-
- default:
- if (action.requiresTargetSession) {
- throwFatalError(
- DiagnosticKind.verbRequiresSessionTarget, verb: verb);
- } else if (requiredTarget != null) {
- throwFatalError(
- DiagnosticKind.verbRequiresSpecificTarget, verb: verb,
- requiredTarget: requiredTarget);
- } else {
- throwFatalError(
- DiagnosticKind.verbRequiresTarget, verb: verb);
- }
- break;
- }
- } else if (requiredTarget != null && target.kind != requiredTarget) {
- switch (requiredTarget) {
- case TargetKind.TCP_SOCKET:
- throwFatalError(
- DiagnosticKind.verbRequiresSocketTarget,
- verb: verb, target: target);
- break;
-
- case TargetKind.FILE:
- throwFatalError(
- DiagnosticKind.verbRequiresFileTarget,
- verb: verb, target: target);
- break;
-
- default:
- throwFatalError(
- DiagnosticKind.verbRequiresSpecificTargetButGot,
- verb: verb, target: target,
- requiredTarget: requiredTarget);
- }
- }
- }
-
- if (action.supportedTargets != null && target != null) {
- if (!action.supportedTargets.contains(target.kind)) {
- throwFatalError(
- DiagnosticKind.verbDoesNotSupportTarget, verb: verb, target: target);
- }
- }
-
- String sessionName;
- if (inSession != null) {
- sessionName = inSession.name;
- if (sessionName == null) {
- throwFatalError(DiagnosticKind.missingSessionName);
- }
- } else if (action.requiresSession) {
- sessionName = currentSession;
- } else if (action.requiresTargetSession &&
- target is NamedTarget &&
- target.name == null) {
- throwFatalError(DiagnosticKind.missingSessionName);
- }
-
- String targetName;
- Uri targetUri;
- if (target is NamedTarget) {
- targetName = target.name;
- if (target.kind == TargetKind.FILE) {
- targetUri = fileUri(targetName, base);
- }
- }
-
- Uri programName =
- sentence.programName == null ? null : fileUri(sentence.programName, base);
- return new AnalyzedSentence(
- verb, target, targetName, trailing, sessionName, base, programName,
- targetUri, toUri, withUri, options);
-}
-
-Uri fileUri(String path, Uri base) => base.resolveUri(new Uri.file(path));
-
-abstract class VerbContext {
- final ClientConnection clientConnection;
-
- final IsolatePool pool;
-
- final UserSession session;
-
- VerbContext(this.clientConnection, this.pool, this.session);
-
- Future<int> performTaskInWorker(SharedTask task);
-
- VerbContext copyWithSession(UserSession session);
-}
-
-/// Represents a task that is shared between the hub (main isolate) and a worker
-/// isolate. Since instances of this class are sent from the hub (main isolate)
-/// to a worker isolate, they should be kept simple:
-///
-/// * Pay attention to the transitive closure of its fields. The closure
-/// should be kept as small as possible to avoid too much copying.
-///
-/// * Avoid enums and other compile-time constants in the transitive closure,
-/// as they aren't canonicalized by the Dart VM, see issue 23244.
-abstract class SharedTask {
- const SharedTask();
-
- Future<int> call(
- CommandSender commandSender,
- StreamIterator<ClientCommand> commandIterator);
-}
-
-class AnalyzedSentence {
- final Verb verb;
-
- final Target target;
-
- final String targetName;
-
- final List<String> trailing;
-
- final String sessionName;
-
- /// The current working directory of the C++ client.
- final Uri base;
-
- final Uri programName;
-
- /// Value of 'file NAME' converted to a Uri (main target, no preposition).
- final Uri targetUri;
-
- /// Value of 'to file NAME' converted to a Uri.
- final Uri toTargetUri;
-
- /// Value of 'with <URI>' converted to a Uri.
- final Uri withUri;
-
- final Options options;
-
- AnalyzedSentence(
- this.verb,
- this.target,
- this.targetName,
- this.trailing,
- this.sessionName,
- this.base,
- this.programName,
- this.targetUri,
- this.toTargetUri,
- this.withUri,
- this.options);
-
- Future<int> performVerb(VerbContext context) {
- return verb.action.perform(this, context);
- }
-}
« no previous file with comments | « pkg/fletchc/lib/src/verbs/help_verb.dart ('k') | pkg/fletchc/lib/src/verbs/options.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698