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

Unified Diff: pkg/servicec/lib/errors.dart

Issue 2035023003: Remove service-compiler related code. (Closed) Base URL: git@github.com:dartino/sdk.git@master
Patch Set: Created 4 years, 6 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/servicec/lib/error_handling_listener.dart ('k') | pkg/servicec/lib/keyword.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/servicec/lib/errors.dart
diff --git a/pkg/servicec/lib/errors.dart b/pkg/servicec/lib/errors.dart
deleted file mode 100644
index 19fc065695abad47cc725c20c548462c04b6ad62..0000000000000000000000000000000000000000
--- a/pkg/servicec/lib/errors.dart
+++ /dev/null
@@ -1,430 +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 file.
-
-library servicec.errors;
-
-import 'package:compiler/src/tokens/token.dart' show
- Token;
-
-import 'package:compiler/src/util/characters.dart' show
- $LF;
-
-import 'dart:io' show
- File;
-
-import 'node.dart' show
- FunctionNode,
- FormalNode,
- IdentifierNode,
- ListType,
- FieldNode,
- MemberNode,
- Node,
- NodeVisitor,
- ServiceNode,
- StructNode,
- TopLevelNode,
- TypeNode,
- UnionNode;
-
-enum ErrorTag {
- badField,
- badFieldType,
- badFormal,
- badFunction,
- badListType,
- badPointerType,
- badReturnType,
- badServiceDefinition,
- badSingleFormal,
- badStructDefinition,
- badTopLevel,
- badTypeParameter,
- badUnion,
- cyclicStruct,
- expectedPrimitiveFormal,
- multipleDefinitions,
- multipleUnions,
- serviceStructNameClash,
- undefinedService
-}
-
-// A reverse map from error names to errors.
-final Map<String, ErrorTag> compilerErrorTypes =
- new Map<String, ErrorTag>.fromIterables(
- ErrorTag.values.map((value) => value.toString()),
- ErrorTag.values
- );
-
-// Error nodes.
-class ServiceErrorNode extends ServiceNode with ErrorNode {
- ServiceErrorNode(IdentifierNode identifier,
- List<FunctionNode> functions,
- Token begin)
- : super(identifier, functions) {
- this.begin = begin;
- tag = ErrorTag.badServiceDefinition;
- }
-}
-
-class StructErrorNode extends StructNode with ErrorNode {
- StructErrorNode(IdentifierNode identifier,
- List<MemberNode> members,
- Token begin)
- : super(identifier, members) {
- this.begin = begin;
- tag = ErrorTag.badStructDefinition;
- }
-}
-
-class TopLevelErrorNode extends TopLevelNode with ErrorNode {
- TopLevelErrorNode(Token begin)
- : super(null) {
- this.begin = begin;
- tag = ErrorTag.badTopLevel;
- }
-
- void accept(NodeVisitor visitor) {
- visitor.visitError(this);
- }
-}
-
-class FunctionErrorNode extends FunctionNode
- with ErrorNode {
- FunctionErrorNode(TypeNode type,
- IdentifierNode identifier,
- List<FormalNode> formals,
- Token begin)
- : super(type, identifier, formals) {
- this.begin = begin;
- tag = ErrorTag.badFunction;
- }
-}
-
-class UnionErrorNode extends UnionNode with ErrorNode {
- UnionErrorNode(List<FieldNode> fields, Token begin)
- : super(fields) {
- this.begin = begin;
- tag = ErrorTag.badUnion;
- }
-}
-
-class FieldErrorNode extends FieldNode with ErrorNode {
- FieldErrorNode(TypeNode type, IdentifierNode identifier, Token begin)
- : super(type, identifier) {
- this.begin = begin;
- tag = ErrorTag.badField;
- }
-}
-
-class FormalErrorNode extends FormalNode with ErrorNode {
- FormalErrorNode(TypeNode type, IdentifierNode identifier, Token begin)
- : super(type, identifier) {
- this.begin = begin;
- tag = ErrorTag.badFormal;
- }
-}
-
-class ListTypeError extends ListType with ErrorNode {
- ListTypeError(IdentifierNode identifier, TypeNode typeParameter, Token begin)
- : super(identifier, typeParameter) {
- this.begin = begin;
- tag = ErrorTag.badListType;
- }
-}
-
-class ErrorNode {
- Token begin;
- ErrorTag tag;
-}
-
-class InternalCompilerError extends Error {
- String message;
- InternalCompilerError(this.message);
-
- String toString() => "InternalCompilerError: $message";
-}
-
-// Error reporter.
-class ErrorReporter {
- String absolutePath;
- String relativePath;
- String fileContents;
-
- List<int> lineStarts;
-
- ErrorReporter(this.absolutePath, this.relativePath) {
- fileContents = new File(absolutePath).readAsStringSync();
-
- lineStarts = <int>[-1];
-
- for (int i = 0; i < fileContents.length; ++i) {
- if ($LF == fileContents.codeUnitAt(i)) {
- lineStarts.add(i);
- }
- }
- }
-
- void report(List<CompilationError> errors) {
- print("Number of errors: ${errors.length}");
- for (CompilationError error in errors) {
- error.report(this);
- }
- }
-
- void _reportMessage(String message, Token token, String type) {
- if (null != token) {
- int lineNumber = getLineNumber(token);
- int lineOffset = getLineOffset(token, lineNumber);
- print("$relativePath:$lineNumber:$lineOffset: $type: $message");
- int end = lineNumber < lineStarts.length ? lineStarts[lineNumber]
- : fileContents.length;
- print(fileContents.substring(lineStarts[lineNumber - 1] + 1, end));
- print(" " * (lineOffset - 1) + "^");
- } else {
- print("$relativePath: $type: $message");
- }
- }
-
- void reportError(String message, [Token token]) {
- _reportMessage(message, token, "error");
- }
-
- void reportWarning(String message, [Token token]) {
- _reportMessage(message, token, "warning");
- }
-
- void reportInfo(String message, [Token token]) {
- _reportMessage(message, token, "info");
- }
-
- int getLineNumber(Token token) {
- for (int i = 1; i < lineStarts.length; ++i) {
- if (lineStarts[i] >= token.charOffset) {
- return i;
- }
- }
- return lineStarts.length;
- }
-
- int getLineOffset(Token token, int currentLine) {
- return token.charOffset - lineStarts[currentLine - 1];
- }
-}
-
-// Compilation errors.
-abstract class CompilationError {
- ErrorTag get tag;
- void report(ErrorReporter reporter);
-}
-
-class UndefinedServiceError extends CompilationError {
- ErrorTag get tag => ErrorTag.undefinedService;
- void report(ErrorReporter reporter) {
- reporter.reportError("There should be at least one service per " +
- "compilation unit.");
- }
-}
-
-class SyntaxError extends CompilationError {
- ErrorNode node;
- ErrorTag get tag => node.tag;
-
- SyntaxError(this.node);
-
- Map<ErrorTag, String> errorMessages = {
- ErrorTag.badField: "Unfinished field declaration.",
- ErrorTag.badFormal: "Unfinished formal argument declaration.",
- ErrorTag.badFunction: "Unfinished function declaration.",
- ErrorTag.badListType: "Unexpected token while parsing type parameter.",
- ErrorTag.badServiceDefinition: "Unfinished service definition.",
- ErrorTag.badStructDefinition: "Unfinished struct definition.",
- ErrorTag.badTopLevel: "Unexpected token while parsing top-level " +
- "definition."
- };
-
- Map<ErrorTag, String> infoMessages = {
- ErrorTag.badField: null,
- ErrorTag.badFormal: null,
- ErrorTag.badFunction: null,
- ErrorTag.badListType: "Expected a primitive type, a string, or a " +
- "structure as the List type parameter",
- ErrorTag.badServiceDefinition: null,
- ErrorTag.badStructDefinition: null,
- ErrorTag.badTopLevel: "Top-level defintions start with `service` or " +
- "`struct`."
- };
-
- void report(ErrorReporter reporter) {
- reporter.reportError(errorMessages[node.tag], node.begin);
- if (null != infoMessages[node.tag]) {
- reporter.reportInfo(infoMessages[node.tag], node.begin);
- }
- }
-
-}
-
-class CyclicStructError extends CompilationError {
- Iterable<StructNode> chain;
- ErrorTag get tag => ErrorTag.cyclicStruct;
-
- CyclicStructError(this.chain);
-
- void report(ErrorReporter reporter) {
- String message;
- StructNode struct = chain.first;
- if (chain.length == 1) {
- message = "Struct ${struct.identifier.value} references itself.";
- } else {
- message = "Struct ${struct.identifier.value} has a cyclic reference;";
- }
- reporter.reportError(message, struct.identifier.token);
- for (StructNode struct in chain) {
- if (struct == chain.first) continue;
- message = "references ${struct.identifier.value}";
- if (struct == chain.last) {
- message += ".";
- } else {
- message += " which in turn";
- }
- reporter.reportInfo(message, struct.identifier.token);
- }
- }
-}
-
-class MultipleUnionsError extends CompilationError {
- StructNode struct;
- ErrorTag get tag => ErrorTag.multipleUnions;
-
- MultipleUnionsError(this.struct);
-
- void report(ErrorReporter reporter) {
- reporter.reportError(
- "Struct ${struct.identifier.value} contains multiple unions.",
- struct.identifier.token);
- }
-}
-
-class NotPrimitiveFormalError extends CompilationError {
- FormalNode formal;
- ErrorTag get tag => ErrorTag.expectedPrimitiveFormal;
-
- NotPrimitiveFormalError(this.formal);
-
- void report(ErrorReporter reporter) {
- reporter.reportError(
- "Unexpected type of formal argument '${formal.identifier.value}'.",
- formal.type.identifier.token);
- reporter.reportInfo(
- "All formal arguments should have primitive types when the function " +
- "has more than one formal argument.",
- formal.type.identifier.token);
- }
-}
-
-class MultipleDefinitionsError extends CompilationError {
- IdentifierNode original;
- IdentifierNode redefined;
- ErrorTag get tag => ErrorTag.multipleDefinitions;
-
- MultipleDefinitionsError(this.original, this.redefined);
-
- void report(ErrorReporter reporter) {
- reporter.reportError("Redefined symbol ${redefined.value};",
- redefined.token);
- reporter.reportInfo("Original definition found here.", original.token);
- }
-}
-
-class ServiceStructNameClashError extends CompilationError {
- IdentifierNode original;
- IdentifierNode redefined;
- ErrorTag get tag => ErrorTag.serviceStructNameClash;
-
- ServiceStructNameClashError(this.original, this.redefined);
-
- void report(ErrorReporter reporter) {
- reporter.reportError("Identifier ${redefined.value} used both as a " +
- "service name and as a struct name;",
- redefined.token);
- reporter.reportInfo("Original definition found here.", original.token);
- }
-}
-
-abstract class BadTypeError extends CompilationError {
- TypeNode type;
- String get errorMessage;
- String get infoMessage;
-
- BadTypeError(this.type);
-
- void report(ErrorReporter reporter) {
- reporter.reportError(errorMessage, type.identifier.token);
- reporter.reportInfo(infoMessage, type.identifier.token);
- }
-}
-
-class BadReturnTypeError extends BadTypeError {
- ErrorTag get tag => ErrorTag.badReturnType;
- String get errorMessage => "Unexpected return type.";
- String get infoMessage => "Expected a pointer type or a primitive type as " +
- "the return type of a function.";
-
- BadReturnTypeError(TypeNode type)
- : super(type);
-}
-
-class BadSingleFormalError extends BadTypeError {
- ErrorTag get tag => ErrorTag.badSingleFormal;
- String get errorMessage => "Unexpected type of formal argument.";
- String get infoMessage => "Expected a primitive type or a pointer type for " +
- "a function with just one formal argument.";
-
- BadSingleFormalError(TypeNode type)
- : super(type);
-}
-
-class BadFieldTypeError extends BadTypeError {
- ErrorTag get tag => ErrorTag.badFieldType;
- String get errorMessage => "Unexpected field type.";
- String get infoMessage =>
- "A field type should be one of the following:\n" +
- " * a primitive type, e.g. int32;\n" +
- " * a String;\n" +
- " * a struct type, e.g. Foo.\n" +
- " * a pointer to a struct, e.g. Foo*;\n" +
- " * a list of structs, e.g. List<Foo>.";
-
- BadFieldTypeError(TypeNode type)
- : super(type);
-}
-
-class BadPointerTypeError extends BadTypeError {
- ErrorTag get tag => ErrorTag.badPointerType;
- String get errorMessage => "Undefined struct '${type.identifier.value}'.";
- String get infoMessage => "Expected a pointer to a known struct type.";
-
- BadPointerTypeError(TypeNode type)
- : super(type);
-}
-
-class BadListTypeError extends BadTypeError {
- ErrorTag get tag => ErrorTag.badListType;
- String get errorMessage =>
- "Unexpected generic type '${type.identifier.value}'.";
- String get infoMessage => "'List' is the only supported generic type.";
-
- BadListTypeError(TypeNode type)
- : super(type);
-}
-
-class BadTypeParameterError extends BadTypeError {
- ErrorTag get tag => ErrorTag.badTypeParameter;
- String get errorMessage => "Unexpected type parameter.";
- String get infoMessage => "Expected a primitive type or a structure as " +
- "the List type parameter.";
-
- BadTypeParameterError(TypeNode type)
- : super(type);
-}
« no previous file with comments | « pkg/servicec/lib/error_handling_listener.dart ('k') | pkg/servicec/lib/keyword.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698