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

Unified Diff: lib/src/js/js_types.dart

Issue 1879373004: Implement modular compilation (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: Created 4 years, 8 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 | « lib/src/js/js_ast.dart ('k') | lib/src/js/module_transform.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/src/js/js_types.dart
diff --git a/lib/src/js/js_types.dart b/lib/src/js/js_types.dart
deleted file mode 100644
index 526d19a6b067cd55e8d55d1b026373b9587e7b6b..0000000000000000000000000000000000000000
--- a/lib/src/js/js_types.dart
+++ /dev/null
@@ -1,198 +0,0 @@
-// Copyright (c) 2016, 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.
-
-part of js_ast;
-
-final _any = new AnyTypeRef._();
-final _unknown = new UnknownTypeRef._();
-final _null = new NullTypeRef();
-
-/// JavaScript type reference, designed to support a subset of the type systems
-/// of the Closure Compiler and TypeScript:
-/// - https://developers.google.com/closure/compiler/docs/js-for-compiler#types
-/// - https://github.com/Microsoft/TypeScript/blob/v1.8.0-beta/doc/spec.md#3
-///
-/// Note that some subtleties like "nullability" or "optionality" are handled
-/// using unions (with a [NullTypeRef] or with an "undefined" named typeref).
-/// Also, primitives aren't modeled differently than named / qualified types,
-/// as it brings little value for now. Primitive-specific type formatting is
-/// handled by the type printers (for instance, the knowledge that
-/// `number|null` is just `number` in TypeScript, and is `number?` in Closure).
-abstract class TypeRef extends Expression {
-
- int get precedenceLevel => PRIMARY;
-
- TypeRef();
-
- factory TypeRef.any() => _any;
-
- factory TypeRef.void_() => new TypeRef.named('void');
-
- factory TypeRef.unknown() => _unknown;
-
- factory TypeRef.generic(TypeRef rawType, Iterable<TypeRef> typeArgs) {
- if (typeArgs.isEmpty) {
- throw new ArgumentError.value(typeArgs, "typeArgs", "is empty");
- }
- return new GenericTypeRef(rawType, typeArgs.toList());
- }
-
- factory TypeRef.array([TypeRef elementType]) =>
- new ArrayTypeRef(elementType);
-
- factory TypeRef.object([TypeRef keyType, TypeRef valueType]) {
- // TODO(ochafik): Roll out a dedicated ObjectTypeRef?
- var rawType = new TypeRef.named('Object');
- return keyType == null && valueType == null
- ? rawType
- : new GenericTypeRef(rawType, [keyType ?? _any, valueType ?? _any]);
- }
-
- factory TypeRef.function(
- [TypeRef returnType, Map<Identifier, TypeRef> paramTypes]) =>
- new FunctionTypeRef(returnType, paramTypes);
-
- factory TypeRef.record(Map<Identifier, TypeRef> types) =>
- new RecordTypeRef(types);
-
- factory TypeRef.string() => new TypeRef.named('string');
-
- factory TypeRef.number() => new TypeRef.named('number');
-
- factory TypeRef.undefined() => new TypeRef.named('undefined');
-
- factory TypeRef.boolean() => new TypeRef.named('boolean');
-
- factory TypeRef.qualified(List<Identifier> path) =>
- new QualifiedTypeRef(path);
-
- factory TypeRef.named(String name) =>
- new TypeRef.qualified(<Identifier>[new Identifier(name)]);
-
- bool get isAny => this is AnyTypeRef;
- bool get isUnknown => this is UnknownTypeRef;
- bool get isNull => this is NullTypeRef;
-
- TypeRef or(TypeRef other) => new UnionTypeRef([this, other]);
-
- TypeRef orUndefined() => or(new TypeRef.undefined());
- TypeRef orNull() => or(_null);
-
- TypeRef toOptional() =>
- new OptionalTypeRef(this);
-}
-
-class AnyTypeRef extends TypeRef {
- AnyTypeRef._() : super();
-
- factory AnyTypeRef() => _any;
- accept(NodeVisitor visitor) => visitor.visitAnyTypeRef(this);
- void visitChildren(NodeVisitor visitor) {}
- _clone() => new AnyTypeRef();
-}
-
-class NullTypeRef extends QualifiedTypeRef {
- NullTypeRef() : super([new Identifier("null")]);
- _clone() => new NullTypeRef();
-}
-
-class UnknownTypeRef extends TypeRef {
- UnknownTypeRef._() : super();
-
- factory UnknownTypeRef() => _unknown;
- accept(NodeVisitor visitor) => visitor.visitUnknownTypeRef(this);
- void visitChildren(NodeVisitor visitor) {}
- _clone() => new UnknownTypeRef();
-}
-
-class QualifiedTypeRef extends TypeRef {
- final List<Identifier> path;
- QualifiedTypeRef(this.path);
-
- accept(NodeVisitor visitor) => visitor.visitQualifiedTypeRef(this);
- void visitChildren(NodeVisitor visitor) =>
- path.forEach((p) => p.accept(visitor));
- _clone() => new QualifiedTypeRef(path);
-}
-
-class ArrayTypeRef extends TypeRef {
- final TypeRef elementType;
- ArrayTypeRef(this.elementType);
- accept(NodeVisitor visitor) => visitor.visitArrayTypeRef(this);
- void visitChildren(NodeVisitor visitor) {
- elementType.accept(visitor);
- }
- _clone() => new ArrayTypeRef(elementType);
-}
-
-class GenericTypeRef extends TypeRef {
- final TypeRef rawType;
- final List<TypeRef> typeArgs;
- GenericTypeRef(this.rawType, this.typeArgs);
-
- accept(NodeVisitor visitor) => visitor.visitGenericTypeRef(this);
- void visitChildren(NodeVisitor visitor) {
- rawType.accept(visitor);
- typeArgs.forEach((p) => p.accept(visitor));
- }
- _clone() => new GenericTypeRef(rawType, typeArgs);
-}
-
-class UnionTypeRef extends TypeRef {
- final List<TypeRef> types;
- UnionTypeRef(this.types);
-
- accept(NodeVisitor visitor) => visitor.visitUnionTypeRef(this);
- void visitChildren(NodeVisitor visitor) {
- types.forEach((p) => p.accept(visitor));
- }
- _clone() => new UnionTypeRef(types);
-
- @override
- TypeRef or(TypeRef other) {
- if (types.contains(other)) return this;
- return new UnionTypeRef([]..addAll(types)..add(other));
- }
-}
-
-class OptionalTypeRef extends TypeRef {
- final TypeRef type;
- OptionalTypeRef(this.type);
-
- accept(NodeVisitor visitor) => visitor.visitOptionalTypeRef(this);
- void visitChildren(NodeVisitor visitor) {
- type.accept(visitor);
- }
- _clone() => new OptionalTypeRef(type);
-
- @override
- TypeRef orUndefined() => this;
-}
-
-class RecordTypeRef extends TypeRef {
- final Map<Identifier, TypeRef> types;
- RecordTypeRef(this.types);
-
- accept(NodeVisitor visitor) => visitor.visitRecordTypeRef(this);
- void visitChildren(NodeVisitor visitor) {
- types.values.forEach((p) => p.accept(visitor));
- }
- _clone() => new RecordTypeRef(types);
-}
-
-class FunctionTypeRef extends TypeRef {
- final TypeRef returnType;
- final Map<Identifier, TypeRef> paramTypes;
- FunctionTypeRef(this.returnType, this.paramTypes);
-
- accept(NodeVisitor visitor) => visitor.visitFunctionTypeRef(this);
- void visitChildren(NodeVisitor visitor) {
- returnType.accept(visitor);
- paramTypes.forEach((n, t) {
- n.accept(visitor);
- t.accept(visitor);
- });
- }
- _clone() => new FunctionTypeRef(returnType, paramTypes);
-}
« no previous file with comments | « lib/src/js/js_ast.dart ('k') | lib/src/js/module_transform.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698