Skip to content

Commit

Permalink
fix(bootstrap): fix the configuration of ExceptionHandler
Browse files Browse the repository at this point in the history
  • Loading branch information
vsavkin authored and jelbourn committed Dec 9, 2015
1 parent d58f017 commit 0d9a1de
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 10 deletions.
11 changes: 9 additions & 2 deletions modules/angular2/src/core/application_ref.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {NgZone} from 'angular2/src/core/zone/ng_zone';
import {Type, isBlank, isPresent, assertionsEnabled, print} from 'angular2/src/facade/lang';
import {Type, isBlank, isPresent, assertionsEnabled, print, IS_DART} from 'angular2/src/facade/lang';
import {provide, Provider, Injector, OpaqueToken} from 'angular2/src/core/di';
import {
APP_COMPONENT_REF_PROMISE,
Expand Down Expand Up @@ -412,7 +412,14 @@ export class ApplicationRef_ extends ApplicationRef {

var tickResult = PromiseWrapper.then(compRefToken, tick);

PromiseWrapper.then(tickResult, (_) => {});
// THIS MUST ONLY RUN IN DART.
// This is required to report an error when no components with a matching selector found.
// Otherwise the promise will never be completed.
// Doing this in JS causes an extra error message to appear.
if (IS_DART) {
PromiseWrapper.then(tickResult, (_) => {});
}

PromiseWrapper.then(tickResult, null,
(err, stackTrace) => completer.reject(err, stackTrace));
} catch (e) {
Expand Down
6 changes: 4 additions & 2 deletions modules/angular2/src/platform/browser_common.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {CONST_EXPR} from 'angular2/src/facade/lang';
import {CONST_EXPR, IS_DART} from 'angular2/src/facade/lang';
import {provide, Provider, Injector, OpaqueToken} from 'angular2/src/core/di';

import {
Expand Down Expand Up @@ -48,7 +48,9 @@ export const BROWSER_PROVIDERS: Array<any /*Type | Provider | any[]*/> = CONST_E
]);

function _exceptionHandler(): ExceptionHandler {
return new ExceptionHandler(DOM, false);
// !IS_DART is required because we must rethrow exceptions in JS,
// but must not rethrow exceptions in Dart
return new ExceptionHandler(DOM, !IS_DART);
}

function _document(): any {
Expand Down
4 changes: 2 additions & 2 deletions modules/angular2/src/platform/worker_render_common.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {CONST_EXPR} from 'angular2/src/facade/lang';
import {CONST_EXPR, IS_DART} from 'angular2/src/facade/lang';
import {MessageBus} from 'angular2/src/web_workers/shared/message_bus';
import {NgZone} from 'angular2/src/core/zone/ng_zone';
import {AnchorBasedAppRootUrl} from 'angular2/src/compiler/anchor_based_app_root_url';
Expand Down Expand Up @@ -112,7 +112,7 @@ export function initWebWorkerRenderPlatform(): void {
}

function _exceptionHandler(): ExceptionHandler {
return new ExceptionHandler(DOM, false);
return new ExceptionHandler(DOM, !IS_DART);
}

function _document(): any {
Expand Down
4 changes: 2 additions & 2 deletions modules/angular2/test/platform/browser/bootstrap_spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ export function main() {

it('should throw if no element is found', inject([AsyncTestCompleter], (async) => {
var logger = new _ArrayLogger();
var exceptionHandler = new ExceptionHandler(logger, IS_DART ? false : true);
var exceptionHandler = new ExceptionHandler(logger, !IS_DART);

var refPromise =
bootstrap(HelloRootCmp, [provide(ExceptionHandler, {useValue: exceptionHandler})]);
Expand All @@ -140,7 +140,7 @@ export function main() {
it('should invoke the default exception handler when bootstrap fails',
inject([AsyncTestCompleter], (async) => {
var logger = new _ArrayLogger();
var exceptionHandler = new ExceptionHandler(logger, IS_DART ? false : true);
var exceptionHandler = new ExceptionHandler(logger, !IS_DART);

var refPromise =
bootstrap(HelloRootCmp, [provide(ExceptionHandler, {useValue: exceptionHandler})]);
Expand Down
4 changes: 2 additions & 2 deletions modules/angular2/test/router/route_config_spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import {Component, Directive, View} from 'angular2/src/core/metadata';
import {DOM} from 'angular2/src/platform/dom/dom_adapter';
import {provide} from 'angular2/core';
import {DOCUMENT} from 'angular2/src/platform/dom/dom_tokens';
import {Type} from 'angular2/src/facade/lang';
import {Type, IS_DART} from 'angular2/src/facade/lang';

import {
ROUTER_PROVIDERS,
Expand Down Expand Up @@ -46,7 +46,7 @@ export function main() {
el = DOM.createElement('app-cmp', fakeDoc);
DOM.appendChild(fakeDoc.body, el);
var logger = new _ArrayLogger();
var exceptionHandler = new ExceptionHandler(logger, true);
var exceptionHandler = new ExceptionHandler(logger, !IS_DART);
testBindings = [
ROUTER_PROVIDERS,
provide(LocationStrategy, {useClass: MockLocationStrategy}),
Expand Down

0 comments on commit 0d9a1de

Please sign in to comment.