Index: pkg/compiler/lib/src/resolution/operators.dart |
diff --git a/pkg/compiler/lib/src/resolution/operators.dart b/pkg/compiler/lib/src/resolution/operators.dart |
deleted file mode 100644 |
index b524cf4b5726ff4fd73c5ae6342ec9e142665dc9..0000000000000000000000000000000000000000 |
--- a/pkg/compiler/lib/src/resolution/operators.dart |
+++ /dev/null |
@@ -1,511 +0,0 @@ |
-// Copyright (c) 2015, 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. |
- |
-library dart2js.operators; |
- |
-import '../elements/elements.dart'; |
-import '../universe/call_structure.dart' show CallStructure; |
-import '../universe/selector.dart' show Selector, SelectorKind; |
- |
-enum UnaryOperatorKind { |
- NOT, |
- NEGATE, |
- COMPLEMENT, |
-} |
- |
-class UnaryOperator { |
- final UnaryOperatorKind kind; |
- final String name; |
- final String selectorName; |
- |
- const UnaryOperator(this.kind, this.name, this.selectorName); |
- |
- bool get isUserDefinable => selectorName != null; |
- |
- Selector get selector => new Selector(SelectorKind.OPERATOR, |
- new PublicName(selectorName), CallStructure.NO_ARGS); |
- |
- String toString() => name; |
- |
- /// The unary ! operator. |
- static const UnaryOperator NOT = |
- const UnaryOperator(UnaryOperatorKind.NOT, '!', null); |
- |
- /// The unary - operator. |
- static const UnaryOperator NEGATE = |
- const UnaryOperator(UnaryOperatorKind.NEGATE, '-', 'unary-'); |
- |
- /// The unary ~ operator. |
- static const UnaryOperator COMPLEMENT = |
- const UnaryOperator(UnaryOperatorKind.COMPLEMENT, '~', '~'); |
- |
- static UnaryOperator parse(String value) { |
- switch (value) { |
- case '!': |
- return NOT; |
- case '-': |
- return NEGATE; |
- case '~': |
- return COMPLEMENT; |
- default: |
- return null; |
- } |
- } |
- |
- // ignore: MISSING_RETURN |
- static UnaryOperator fromKind(UnaryOperatorKind kind) { |
- switch (kind) { |
- case UnaryOperatorKind.NOT: |
- return NOT; |
- case UnaryOperatorKind.NEGATE: |
- return NEGATE; |
- case UnaryOperatorKind.COMPLEMENT: |
- return COMPLEMENT; |
- } |
- } |
-} |
- |
-enum BinaryOperatorKind { |
- EQ, |
- NOT_EQ, |
- INDEX, |
- ADD, |
- SUB, |
- MUL, |
- DIV, |
- IDIV, |
- MOD, |
- SHL, |
- SHR, |
- GTEQ, |
- GT, |
- LTEQ, |
- LT, |
- AND, |
- OR, |
- XOR, |
- LOGICAL_AND, |
- LOGICAL_OR, |
- IF_NULL, |
-} |
- |
-class BinaryOperator { |
- final BinaryOperatorKind kind; |
- final String name; |
- |
- const BinaryOperator._(this.kind, this.name); |
- |
- /// `true` if this operator can be implemented through an `operator [name]` |
- /// method. |
- bool get isUserDefinable => true; |
- |
- String get selectorName => name; |
- |
- String toString() => name; |
- |
- /// The == operator. |
- static const BinaryOperator EQ = |
- const BinaryOperator._(BinaryOperatorKind.EQ, '=='); |
- |
- /// The != operator. |
- static const BinaryOperator NOT_EQ = const _NotEqualsOperator(); |
- |
- /// The [] operator. |
- static const BinaryOperator INDEX = |
- const BinaryOperator._(BinaryOperatorKind.INDEX, '[]'); |
- |
- /// The binary + operator. |
- static const BinaryOperator ADD = |
- const BinaryOperator._(BinaryOperatorKind.ADD, '+'); |
- |
- /// The binary - operator. |
- static const BinaryOperator SUB = |
- const BinaryOperator._(BinaryOperatorKind.SUB, '-'); |
- |
- /// The binary * operator. |
- static const BinaryOperator MUL = |
- const BinaryOperator._(BinaryOperatorKind.MUL, '*'); |
- |
- /// The binary / operator. |
- static const BinaryOperator DIV = |
- const BinaryOperator._(BinaryOperatorKind.DIV, '/'); |
- |
- /// The binary ~/ operator. |
- static const BinaryOperator IDIV = |
- const BinaryOperator._(BinaryOperatorKind.IDIV, '~/'); |
- |
- /// The binary % operator. |
- static const BinaryOperator MOD = |
- const BinaryOperator._(BinaryOperatorKind.MOD, '%'); |
- |
- /// The binary << operator. |
- static const BinaryOperator SHL = |
- const BinaryOperator._(BinaryOperatorKind.SHL, '<<'); |
- |
- /// The binary >> operator. |
- static const BinaryOperator SHR = |
- const BinaryOperator._(BinaryOperatorKind.SHR, '>>'); |
- |
- /// The binary >= operator. |
- static const BinaryOperator GTEQ = |
- const BinaryOperator._(BinaryOperatorKind.GTEQ, '>='); |
- |
- /// The binary > operator. |
- static const BinaryOperator GT = |
- const BinaryOperator._(BinaryOperatorKind.GT, '>'); |
- |
- /// The binary <= operator. |
- static const BinaryOperator LTEQ = |
- const BinaryOperator._(BinaryOperatorKind.LTEQ, '<='); |
- |
- /// The binary < operator. |
- static const BinaryOperator LT = |
- const BinaryOperator._(BinaryOperatorKind.LT, '<'); |
- |
- /// The binary & operator. |
- static const BinaryOperator AND = |
- const BinaryOperator._(BinaryOperatorKind.AND, '&'); |
- |
- /// The binary | operator. |
- static const BinaryOperator OR = |
- const BinaryOperator._(BinaryOperatorKind.OR, '|'); |
- |
- /// The binary ^ operator. |
- static const BinaryOperator XOR = |
- const BinaryOperator._(BinaryOperatorKind.XOR, '^'); |
- |
- /// The logical && operator. |
- static const BinaryOperator LOGICAL_AND = |
- const _LogicalOperator(BinaryOperatorKind.LOGICAL_AND, '&&'); |
- |
- /// The binary | operator. |
- static const BinaryOperator LOGICAL_OR = |
- const _LogicalOperator(BinaryOperatorKind.LOGICAL_OR, '||'); |
- |
- /// The if-null ?? operator. |
- static const BinaryOperator IF_NULL = |
- const _IfNullOperator(BinaryOperatorKind.IF_NULL, '??'); |
- |
- static BinaryOperator parse(String value) { |
- switch (value) { |
- case '==': |
- return EQ; |
- case '!=': |
- return NOT_EQ; |
- case '[]': |
- return INDEX; |
- case '*': |
- return MUL; |
- case '/': |
- return DIV; |
- case '%': |
- return MOD; |
- case '~/': |
- return IDIV; |
- case '+': |
- return ADD; |
- case '-': |
- return SUB; |
- case '<<': |
- return SHL; |
- case '>>': |
- return SHR; |
- case '>=': |
- return GTEQ; |
- case '>': |
- return GT; |
- case '<=': |
- return LTEQ; |
- case '<': |
- return LT; |
- case '&': |
- return AND; |
- case '^': |
- return XOR; |
- case '|': |
- return OR; |
- case '&&': |
- return LOGICAL_AND; |
- case '||': |
- return LOGICAL_OR; |
- case '??': |
- return IF_NULL; |
- default: |
- return null; |
- } |
- } |
- |
- // ignore: MISSING_RETURN |
- static BinaryOperator fromKind(BinaryOperatorKind kind) { |
- switch (kind) { |
- case BinaryOperatorKind.EQ: |
- return EQ; |
- case BinaryOperatorKind.NOT_EQ: |
- return NOT_EQ; |
- case BinaryOperatorKind.INDEX: |
- return INDEX; |
- case BinaryOperatorKind.MUL: |
- return MUL; |
- case BinaryOperatorKind.DIV: |
- return DIV; |
- case BinaryOperatorKind.MOD: |
- return MOD; |
- case BinaryOperatorKind.IDIV: |
- return IDIV; |
- case BinaryOperatorKind.ADD: |
- return ADD; |
- case BinaryOperatorKind.SUB: |
- return SUB; |
- case BinaryOperatorKind.SHL: |
- return SHL; |
- case BinaryOperatorKind.SHR: |
- return SHR; |
- case BinaryOperatorKind.GTEQ: |
- return GTEQ; |
- case BinaryOperatorKind.GT: |
- return GT; |
- case BinaryOperatorKind.LTEQ: |
- return LTEQ; |
- case BinaryOperatorKind.LT: |
- return LT; |
- case BinaryOperatorKind.AND: |
- return AND; |
- case BinaryOperatorKind.XOR: |
- return XOR; |
- case BinaryOperatorKind.OR: |
- return OR; |
- case BinaryOperatorKind.LOGICAL_AND: |
- return LOGICAL_AND; |
- case BinaryOperatorKind.LOGICAL_OR: |
- return LOGICAL_OR; |
- case BinaryOperatorKind.IF_NULL: |
- return IF_NULL; |
- } |
- } |
-} |
- |
-/// The operator !=, which is not user definable operator but instead is a |
-/// negation of a call to user definable operator, namely ==. |
-class _NotEqualsOperator extends BinaryOperator { |
- const _NotEqualsOperator() : super._(BinaryOperatorKind.NOT_EQ, '!='); |
- |
- bool get isUserDefinable => false; |
- |
- String get selectorName => '=='; |
-} |
- |
-/// The operators && and || which are not user definable operators but control |
-/// structures. |
-class _LogicalOperator extends BinaryOperator { |
- const _LogicalOperator(BinaryOperatorKind kind, String name) |
- : super._(kind, name); |
- |
- bool get isUserDefinable => false; |
- |
- String get selectorName => null; |
-} |
- |
-/// The operators ?? is not user definable. |
-class _IfNullOperator extends BinaryOperator { |
- const _IfNullOperator(BinaryOperatorKind kind, String name) |
- : super._(kind, name); |
- |
- bool get isUserDefinable => false; |
- |
- String get selectorName => '??'; |
-} |
- |
-enum AssignmentOperatorKind { |
- ASSIGN, |
- IF_NULL, |
- ADD, |
- SUB, |
- MUL, |
- DIV, |
- IDIV, |
- MOD, |
- SHL, |
- SHR, |
- AND, |
- OR, |
- XOR, |
-} |
- |
-class AssignmentOperator { |
- final AssignmentOperatorKind kind; |
- final BinaryOperator binaryOperator; |
- final String name; |
- final bool isUserDefinable; |
- |
- const AssignmentOperator._(this.kind, this.name, this.binaryOperator, |
- {this.isUserDefinable: true}); |
- |
- String get selectorName { |
- return binaryOperator != null ? binaryOperator.selectorName : null; |
- } |
- |
- String toString() => name; |
- |
- /// The = operator. |
- static const AssignmentOperator ASSIGN = const AssignmentOperator._( |
- AssignmentOperatorKind.ASSIGN, '=', null, |
- isUserDefinable: false); |
- |
- /// The ??= operator. |
- static const AssignmentOperator IF_NULL = const AssignmentOperator._( |
- AssignmentOperatorKind.IF_NULL, '??=', BinaryOperator.IF_NULL, |
- isUserDefinable: false); |
- |
- /// The += assignment operator. |
- static const AssignmentOperator ADD = const AssignmentOperator._( |
- AssignmentOperatorKind.ADD, '+=', BinaryOperator.ADD); |
- |
- /// The -= assignment operator. |
- static const AssignmentOperator SUB = const AssignmentOperator._( |
- AssignmentOperatorKind.SUB, '-=', BinaryOperator.SUB); |
- |
- /// The *= assignment operator. |
- static const AssignmentOperator MUL = const AssignmentOperator._( |
- AssignmentOperatorKind.MUL, '*=', BinaryOperator.MUL); |
- |
- /// The /= assignment operator. |
- static const AssignmentOperator DIV = const AssignmentOperator._( |
- AssignmentOperatorKind.DIV, '/=', BinaryOperator.DIV); |
- |
- /// The ~/= assignment operator. |
- static const AssignmentOperator IDIV = const AssignmentOperator._( |
- AssignmentOperatorKind.IDIV, '~/=', BinaryOperator.IDIV); |
- |
- /// The %= assignment operator. |
- static const AssignmentOperator MOD = const AssignmentOperator._( |
- AssignmentOperatorKind.MOD, '%=', BinaryOperator.MOD); |
- |
- /// The <<= assignment operator. |
- static const AssignmentOperator SHL = const AssignmentOperator._( |
- AssignmentOperatorKind.SHL, '<<=', BinaryOperator.SHL); |
- |
- /// The >>= assignment operator. |
- static const AssignmentOperator SHR = const AssignmentOperator._( |
- AssignmentOperatorKind.SHR, '>>=', BinaryOperator.SHR); |
- |
- /// The &= assignment operator. |
- static const AssignmentOperator AND = const AssignmentOperator._( |
- AssignmentOperatorKind.AND, '&=', BinaryOperator.AND); |
- |
- /// The |= assignment operator. |
- static const AssignmentOperator OR = const AssignmentOperator._( |
- AssignmentOperatorKind.OR, '|=', BinaryOperator.OR); |
- |
- /// The ^= assignment operator. |
- static const AssignmentOperator XOR = const AssignmentOperator._( |
- AssignmentOperatorKind.XOR, '^=', BinaryOperator.XOR); |
- |
- static AssignmentOperator parse(String value) { |
- switch (value) { |
- case '=': |
- return ASSIGN; |
- case '??=': |
- return IF_NULL; |
- case '*=': |
- return MUL; |
- case '/=': |
- return DIV; |
- case '%=': |
- return MOD; |
- case '~/=': |
- return IDIV; |
- case '+=': |
- return ADD; |
- case '-=': |
- return SUB; |
- case '<<=': |
- return SHL; |
- case '>>=': |
- return SHR; |
- case '&=': |
- return AND; |
- case '^=': |
- return XOR; |
- case '|=': |
- return OR; |
- default: |
- return null; |
- } |
- } |
- |
- // ignore: MISSING_RETURN |
- static AssignmentOperator fromKind(AssignmentOperatorKind kind) { |
- switch (kind) { |
- case AssignmentOperatorKind.ASSIGN: |
- return ASSIGN; |
- case AssignmentOperatorKind.IF_NULL: |
- return IF_NULL; |
- case AssignmentOperatorKind.ADD: |
- return ADD; |
- case AssignmentOperatorKind.SUB: |
- return SUB; |
- case AssignmentOperatorKind.MUL: |
- return MUL; |
- case AssignmentOperatorKind.DIV: |
- return DIV; |
- case AssignmentOperatorKind.IDIV: |
- return IDIV; |
- case AssignmentOperatorKind.MOD: |
- return MOD; |
- case AssignmentOperatorKind.SHL: |
- return SHL; |
- case AssignmentOperatorKind.SHR: |
- return SHR; |
- case AssignmentOperatorKind.AND: |
- return AND; |
- case AssignmentOperatorKind.OR: |
- return OR; |
- case AssignmentOperatorKind.XOR: |
- return XOR; |
- } |
- } |
-} |
- |
-enum IncDecOperatorKind { INC, DEC } |
- |
-class IncDecOperator { |
- final IncDecOperatorKind kind; |
- final String name; |
- final BinaryOperator binaryOperator; |
- |
- const IncDecOperator._(this.kind, this.name, this.binaryOperator); |
- |
- String get selectorName => binaryOperator.selectorName; |
- |
- String toString() => name; |
- |
- /// The prefix/postfix ++ operator. |
- static const IncDecOperator INC = |
- const IncDecOperator._(IncDecOperatorKind.INC, '++', BinaryOperator.ADD); |
- |
- /// The prefix/postfix -- operator. |
- static const IncDecOperator DEC = |
- const IncDecOperator._(IncDecOperatorKind.DEC, '--', BinaryOperator.SUB); |
- |
- static IncDecOperator parse(String value) { |
- switch (value) { |
- case '++': |
- return INC; |
- case '--': |
- return DEC; |
- default: |
- return null; |
- } |
- } |
- |
- // ignore: MISSING_RETURN |
- static IncDecOperator fromKind(IncDecOperatorKind kind) { |
- switch (kind) { |
- case IncDecOperatorKind.INC: |
- return INC; |
- case IncDecOperatorKind.DEC: |
- return DEC; |
- } |
- } |
-} |