| OLD | NEW |
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "typing.h" | 5 #include "typing.h" |
| 6 | 6 |
| 7 #include "frames.h" | 7 #include "frames.h" |
| 8 #include "frames-inl.h" | 8 #include "frames-inl.h" |
| 9 #include "parser.h" // for CompileTimeValue; TODO(rossberg): should move | 9 #include "parser.h" // for CompileTimeValue; TODO(rossberg): should move |
| 10 #include "scopes.h" | 10 #include "scopes.h" |
| (...skipping 657 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 668 // is no 'positive Smi' type for the lower bound, we use the smallest | 668 // is no 'positive Smi' type for the lower bound, we use the smallest |
| 669 // union of Smi and Unsigned32 as upper bound instead. | 669 // union of Smi and Unsigned32 as upper bound instead. |
| 670 NarrowType(expr, Bounds(Type::SignedSmall(zone()), Type::Number(zone()))); | 670 NarrowType(expr, Bounds(Type::SignedSmall(zone()), Type::Number(zone()))); |
| 671 break; | 671 break; |
| 672 case Token::ADD: { | 672 case Token::ADD: { |
| 673 RECURSE(Visit(expr->left())); | 673 RECURSE(Visit(expr->left())); |
| 674 RECURSE(Visit(expr->right())); | 674 RECURSE(Visit(expr->right())); |
| 675 Bounds l = expr->left()->bounds(); | 675 Bounds l = expr->left()->bounds(); |
| 676 Bounds r = expr->right()->bounds(); | 676 Bounds r = expr->right()->bounds(); |
| 677 Type* lower = | 677 Type* lower = |
| 678 l.lower->Is(Type::None()) || r.lower->Is(Type::None()) ? | 678 !l.lower->IsInhabited() || !r.lower->IsInhabited() ? |
| 679 Type::None(zone()) : | 679 Type::None(zone()) : |
| 680 l.lower->Is(Type::String()) || r.lower->Is(Type::String()) ? | 680 l.lower->Is(Type::String()) || r.lower->Is(Type::String()) ? |
| 681 Type::String(zone()) : | 681 Type::String(zone()) : |
| 682 l.lower->Is(Type::Number()) && r.lower->Is(Type::Number()) ? | 682 l.lower->Is(Type::Number()) && r.lower->Is(Type::Number()) ? |
| 683 Type::SignedSmall(zone()) : Type::None(zone()); | 683 Type::SignedSmall(zone()) : Type::None(zone()); |
| 684 Type* upper = | 684 Type* upper = |
| 685 l.upper->Is(Type::String()) || r.upper->Is(Type::String()) ? | 685 l.upper->Is(Type::String()) || r.upper->Is(Type::String()) ? |
| 686 Type::String(zone()) : | 686 Type::String(zone()) : |
| 687 l.upper->Is(Type::Number()) && r.upper->Is(Type::Number()) ? | 687 l.upper->Is(Type::Number()) && r.upper->Is(Type::Number()) ? |
| 688 Type::Number(zone()) : Type::NumberOrString(zone()); | 688 Type::Number(zone()) : Type::NumberOrString(zone()); |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 773 void AstTyper::VisitModuleUrl(ModuleUrl* module) { | 773 void AstTyper::VisitModuleUrl(ModuleUrl* module) { |
| 774 } | 774 } |
| 775 | 775 |
| 776 | 776 |
| 777 void AstTyper::VisitModuleStatement(ModuleStatement* stmt) { | 777 void AstTyper::VisitModuleStatement(ModuleStatement* stmt) { |
| 778 RECURSE(Visit(stmt->body())); | 778 RECURSE(Visit(stmt->body())); |
| 779 } | 779 } |
| 780 | 780 |
| 781 | 781 |
| 782 } } // namespace v8::internal | 782 } } // namespace v8::internal |
| OLD | NEW |