fix(errors): [2/2] Rename Exception to Error; remove from public API
BREAKING CHANGE: Exceptions are no longer part of the public API. We don't expect that anyone should be referring to the Exception types. ExceptionHandler.call(exception: any, stackTrace?: any, reason?: string): void; change to: ErrorHandler.handleError(error: any): void;
This commit is contained in:
		
							parent
							
								
									86ba072758
								
							
						
					
					
						commit
						7c07bfff97
					
				| @ -6,7 +6,7 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException, ChangeDetectorRef, CollectionChangeRecord, DefaultIterableDiffer, Directive, DoCheck, EmbeddedViewRef, Input, IterableDiffer, IterableDiffers, OnChanges, SimpleChanges, TemplateRef, TrackByFn, ViewContainerRef} from '@angular/core'; | import {ChangeDetectorRef, CollectionChangeRecord, DefaultIterableDiffer, Directive, DoCheck, EmbeddedViewRef, Input, IterableDiffer, IterableDiffers, OnChanges, SimpleChanges, TemplateRef, TrackByFn, ViewContainerRef} from '@angular/core'; | ||||||
| 
 | 
 | ||||||
| import {getTypeNameForDebugging, isBlank, isPresent} from '../facade/lang'; | import {getTypeNameForDebugging, isBlank, isPresent} from '../facade/lang'; | ||||||
| 
 | 
 | ||||||
| @ -112,7 +112,7 @@ export class NgFor implements DoCheck, OnChanges { | |||||||
|         try { |         try { | ||||||
|           this._differ = this._iterableDiffers.find(value).create(this._cdr, this.ngForTrackBy); |           this._differ = this._iterableDiffers.find(value).create(this._cdr, this.ngForTrackBy); | ||||||
|         } catch (e) { |         } catch (e) { | ||||||
|           throw new BaseException( |           throw new Error( | ||||||
|               `Cannot find a differ supporting object '${value}' of type '${getTypeNameForDebugging(value)}'. NgFor only supports binding to Iterables such as Arrays.`); |               `Cannot find a differ supporting object '${value}' of type '${getTypeNameForDebugging(value)}'. NgFor only supports binding to Iterables such as Arrays.`); | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
|  | |||||||
| @ -6,7 +6,7 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException, Inject, Injectable, Optional} from '@angular/core'; | import {Inject, Injectable, Optional} from '@angular/core'; | ||||||
| 
 | 
 | ||||||
| import {isBlank} from '../facade/lang'; | import {isBlank} from '../facade/lang'; | ||||||
| 
 | 
 | ||||||
| @ -53,7 +53,7 @@ export class PathLocationStrategy extends LocationStrategy { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     if (isBlank(href)) { |     if (isBlank(href)) { | ||||||
|       throw new BaseException( |       throw new Error( | ||||||
|           `No base href set. Please provide a value for the APP_BASE_HREF token or add a base element to the document.`); |           `No base href set. Please provide a value for the APP_BASE_HREF token or add a base element to the document.`); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -9,7 +9,7 @@ | |||||||
| import {ChangeDetectorRef, OnDestroy, Pipe, WrappedValue} from '@angular/core'; | import {ChangeDetectorRef, OnDestroy, Pipe, WrappedValue} from '@angular/core'; | ||||||
| import {EventEmitter, Observable} from '../facade/async'; | import {EventEmitter, Observable} from '../facade/async'; | ||||||
| import {isBlank, isPresent, isPromise} from '../facade/lang'; | import {isBlank, isPresent, isPromise} from '../facade/lang'; | ||||||
| import {InvalidPipeArgumentException} from './invalid_pipe_argument_exception'; | import {InvalidPipeArgumentError} from './invalid_pipe_argument_error'; | ||||||
| 
 | 
 | ||||||
| interface SubscriptionStrategy { | interface SubscriptionStrategy { | ||||||
|   createSubscription(async: any, updateLatestValue: any): any; |   createSubscription(async: any, updateLatestValue: any): any; | ||||||
| @ -128,7 +128,7 @@ export class AsyncPipe implements OnDestroy { | |||||||
|     } else if ((<any>obj).subscribe) { |     } else if ((<any>obj).subscribe) { | ||||||
|       return _observableStrategy; |       return _observableStrategy; | ||||||
|     } else { |     } else { | ||||||
|       throw new InvalidPipeArgumentException(AsyncPipe, obj); |       throw new InvalidPipeArgumentError(AsyncPipe, obj); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -11,8 +11,7 @@ import {Inject, LOCALE_ID, Pipe, PipeTransform} from '@angular/core'; | |||||||
| import {StringMapWrapper} from '../facade/collection'; | import {StringMapWrapper} from '../facade/collection'; | ||||||
| import {DateFormatter} from '../facade/intl'; | import {DateFormatter} from '../facade/intl'; | ||||||
| import {DateWrapper, NumberWrapper, isBlank, isDate, isString} from '../facade/lang'; | import {DateWrapper, NumberWrapper, isBlank, isDate, isString} from '../facade/lang'; | ||||||
| 
 | import {InvalidPipeArgumentError} from './invalid_pipe_argument_error'; | ||||||
| import {InvalidPipeArgumentException} from './invalid_pipe_argument_exception'; |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
| @ -102,7 +101,7 @@ export class DatePipe implements PipeTransform { | |||||||
|     if (isBlank(value)) return null; |     if (isBlank(value)) return null; | ||||||
| 
 | 
 | ||||||
|     if (!this.supports(value)) { |     if (!this.supports(value)) { | ||||||
|       throw new InvalidPipeArgumentException(DatePipe, value); |       throw new InvalidPipeArgumentError(DatePipe, value); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     if (NumberWrapper.isNumeric(value)) { |     if (NumberWrapper.isNumeric(value)) { | ||||||
|  | |||||||
| @ -9,7 +9,7 @@ | |||||||
| import {Pipe, PipeTransform} from '@angular/core'; | import {Pipe, PipeTransform} from '@angular/core'; | ||||||
| import {StringWrapper, isBlank, isStringMap} from '../facade/lang'; | import {StringWrapper, isBlank, isStringMap} from '../facade/lang'; | ||||||
| import {NgLocalization, getPluralCategory} from '../localization'; | import {NgLocalization, getPluralCategory} from '../localization'; | ||||||
| import {InvalidPipeArgumentException} from './invalid_pipe_argument_exception'; | import {InvalidPipeArgumentError} from './invalid_pipe_argument_error'; | ||||||
| 
 | 
 | ||||||
| const _INTERPOLATION_REGEXP: RegExp = /#/g; | const _INTERPOLATION_REGEXP: RegExp = /#/g; | ||||||
| 
 | 
 | ||||||
| @ -58,7 +58,7 @@ export class I18nPluralPipe implements PipeTransform { | |||||||
|     if (isBlank(value)) return ''; |     if (isBlank(value)) return ''; | ||||||
| 
 | 
 | ||||||
|     if (!isStringMap(pluralMap)) { |     if (!isStringMap(pluralMap)) { | ||||||
|       throw new InvalidPipeArgumentException(I18nPluralPipe, pluralMap); |       throw new InvalidPipeArgumentError(I18nPluralPipe, pluralMap); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     const key = getPluralCategory(value, Object.keys(pluralMap), this._localization); |     const key = getPluralCategory(value, Object.keys(pluralMap), this._localization); | ||||||
|  | |||||||
| @ -8,7 +8,7 @@ | |||||||
| 
 | 
 | ||||||
| import {Pipe, PipeTransform} from '@angular/core'; | import {Pipe, PipeTransform} from '@angular/core'; | ||||||
| import {isBlank, isStringMap} from '../facade/lang'; | import {isBlank, isStringMap} from '../facade/lang'; | ||||||
| import {InvalidPipeArgumentException} from './invalid_pipe_argument_exception'; | import {InvalidPipeArgumentError} from './invalid_pipe_argument_error'; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * |  * | ||||||
| @ -47,7 +47,7 @@ export class I18nSelectPipe implements PipeTransform { | |||||||
|     if (isBlank(value)) return ''; |     if (isBlank(value)) return ''; | ||||||
| 
 | 
 | ||||||
|     if (!isStringMap(mapping)) { |     if (!isStringMap(mapping)) { | ||||||
|       throw new InvalidPipeArgumentException(I18nSelectPipe, mapping); |       throw new InvalidPipeArgumentError(I18nSelectPipe, mapping); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     return mapping.hasOwnProperty(value) ? mapping[value] : ''; |     return mapping.hasOwnProperty(value) ? mapping[value] : ''; | ||||||
|  | |||||||
| @ -6,10 +6,12 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException, Type} from '@angular/core'; | import {Type} from '@angular/core'; | ||||||
|  | 
 | ||||||
|  | import {BaseError} from '../facade/errors'; | ||||||
| import {stringify} from '../facade/lang'; | import {stringify} from '../facade/lang'; | ||||||
| 
 | 
 | ||||||
| export class InvalidPipeArgumentException extends BaseException { | export class InvalidPipeArgumentError extends BaseError { | ||||||
|   constructor(type: Type<any>, value: Object) { |   constructor(type: Type<any>, value: Object) { | ||||||
|     super(`Invalid argument '${value}' for pipe '${stringify(type)}'`); |     super(`Invalid argument '${value}' for pipe '${stringify(type)}'`); | ||||||
|   } |   } | ||||||
|  | |||||||
| @ -8,7 +8,7 @@ | |||||||
| 
 | 
 | ||||||
| import {Pipe, PipeTransform} from '@angular/core'; | import {Pipe, PipeTransform} from '@angular/core'; | ||||||
| import {isBlank, isString} from '../facade/lang'; | import {isBlank, isString} from '../facade/lang'; | ||||||
| import {InvalidPipeArgumentException} from './invalid_pipe_argument_exception'; | import {InvalidPipeArgumentError} from './invalid_pipe_argument_error'; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
| @ -25,7 +25,7 @@ export class LowerCasePipe implements PipeTransform { | |||||||
|   transform(value: string): string { |   transform(value: string): string { | ||||||
|     if (isBlank(value)) return value; |     if (isBlank(value)) return value; | ||||||
|     if (!isString(value)) { |     if (!isString(value)) { | ||||||
|       throw new InvalidPipeArgumentException(LowerCasePipe, value); |       throw new InvalidPipeArgumentError(LowerCasePipe, value); | ||||||
|     } |     } | ||||||
|     return value.toLowerCase(); |     return value.toLowerCase(); | ||||||
|   } |   } | ||||||
|  | |||||||
| @ -11,7 +11,7 @@ import {Inject, LOCALE_ID, Pipe, PipeTransform, Type} from '@angular/core'; | |||||||
| import {NumberFormatStyle, NumberFormatter} from '../facade/intl'; | import {NumberFormatStyle, NumberFormatter} from '../facade/intl'; | ||||||
| import {NumberWrapper, isBlank, isNumber, isPresent, isString} from '../facade/lang'; | import {NumberWrapper, isBlank, isNumber, isPresent, isString} from '../facade/lang'; | ||||||
| 
 | 
 | ||||||
| import {InvalidPipeArgumentException} from './invalid_pipe_argument_exception'; | import {InvalidPipeArgumentError} from './invalid_pipe_argument_error'; | ||||||
| 
 | 
 | ||||||
| const _NUMBER_FORMAT_REGEXP = /^(\d+)?\.((\d+)(\-(\d+))?)?$/; | const _NUMBER_FORMAT_REGEXP = /^(\d+)?\.((\d+)(\-(\d+))?)?$/; | ||||||
| 
 | 
 | ||||||
| @ -22,7 +22,7 @@ function formatNumber( | |||||||
|   // Convert strings to numbers
 |   // Convert strings to numbers
 | ||||||
|   value = isString(value) && NumberWrapper.isNumeric(value) ? +value : value; |   value = isString(value) && NumberWrapper.isNumeric(value) ? +value : value; | ||||||
|   if (!isNumber(value)) { |   if (!isNumber(value)) { | ||||||
|     throw new InvalidPipeArgumentException(pipe, value); |     throw new InvalidPipeArgumentError(pipe, value); | ||||||
|   } |   } | ||||||
|   let minInt: number; |   let minInt: number; | ||||||
|   let minFraction: number; |   let minFraction: number; | ||||||
|  | |||||||
| @ -9,7 +9,7 @@ | |||||||
| import {Pipe, PipeTransform} from '@angular/core'; | import {Pipe, PipeTransform} from '@angular/core'; | ||||||
| import {ListWrapper} from '../facade/collection'; | import {ListWrapper} from '../facade/collection'; | ||||||
| import {StringWrapper, isArray, isBlank, isString} from '../facade/lang'; | import {StringWrapper, isArray, isBlank, isString} from '../facade/lang'; | ||||||
| import {InvalidPipeArgumentException} from './invalid_pipe_argument_exception'; | import {InvalidPipeArgumentError} from './invalid_pipe_argument_error'; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * Creates a new List or String containing only a subset (slice) of the |  * Creates a new List or String containing only a subset (slice) of the | ||||||
| @ -72,7 +72,7 @@ export class SlicePipe implements PipeTransform { | |||||||
|   transform(value: any, start: number, end: number = null): any { |   transform(value: any, start: number, end: number = null): any { | ||||||
|     if (isBlank(value)) return value; |     if (isBlank(value)) return value; | ||||||
|     if (!this.supports(value)) { |     if (!this.supports(value)) { | ||||||
|       throw new InvalidPipeArgumentException(SlicePipe, value); |       throw new InvalidPipeArgumentError(SlicePipe, value); | ||||||
|     } |     } | ||||||
|     if (isString(value)) { |     if (isString(value)) { | ||||||
|       return StringWrapper.slice(value, start, end); |       return StringWrapper.slice(value, start, end); | ||||||
|  | |||||||
| @ -8,7 +8,7 @@ | |||||||
| 
 | 
 | ||||||
| import {Pipe, PipeTransform} from '@angular/core'; | import {Pipe, PipeTransform} from '@angular/core'; | ||||||
| import {isBlank, isString} from '../facade/lang'; | import {isBlank, isString} from '../facade/lang'; | ||||||
| import {InvalidPipeArgumentException} from './invalid_pipe_argument_exception'; | import {InvalidPipeArgumentError} from './invalid_pipe_argument_error'; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * Implements uppercase transforms to text. |  * Implements uppercase transforms to text. | ||||||
| @ -24,7 +24,7 @@ export class UpperCasePipe implements PipeTransform { | |||||||
|   transform(value: string): string { |   transform(value: string): string { | ||||||
|     if (isBlank(value)) return value; |     if (isBlank(value)) return value; | ||||||
|     if (!isString(value)) { |     if (!isString(value)) { | ||||||
|       throw new InvalidPipeArgumentException(UpperCasePipe, value); |       throw new InvalidPipeArgumentError(UpperCasePipe, value); | ||||||
|     } |     } | ||||||
|     return value.toUpperCase(); |     return value.toUpperCase(); | ||||||
|   } |   } | ||||||
|  | |||||||
| @ -97,3 +97,7 @@ export var collectAndResolveStyles: typeof r.collectAndResolveStyles = r.collect | |||||||
| export var renderStyles: typeof r.renderStyles = r.renderStyles; | export var renderStyles: typeof r.renderStyles = r.renderStyles; | ||||||
| export type ViewMetadata = typeof _compiler_core_private_types.ViewMetadata; | export type ViewMetadata = typeof _compiler_core_private_types.ViewMetadata; | ||||||
| export var ViewMetadata: typeof r.ViewMetadata = r.ViewMetadata; | export var ViewMetadata: typeof r.ViewMetadata = r.ViewMetadata; | ||||||
|  | export type ComponentStillLoadingError = | ||||||
|  |     typeof _compiler_core_private_types.ComponentStillLoadingError; | ||||||
|  | export var ComponentStillLoadingError: typeof r.ComponentStillLoadingError = | ||||||
|  |     r.ComponentStillLoadingError; | ||||||
|  | |||||||
| @ -6,8 +6,6 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {AUTO_STYLE, BaseException} from '@angular/core'; |  | ||||||
| 
 |  | ||||||
| import {ANY_STATE, AnimationOutput, DEFAULT_STATE, EMPTY_STATE} from '../../core_private'; | import {ANY_STATE, AnimationOutput, DEFAULT_STATE, EMPTY_STATE} from '../../core_private'; | ||||||
| import {CompileDirectiveMetadata} from '../compile_metadata'; | import {CompileDirectiveMetadata} from '../compile_metadata'; | ||||||
| import {StringMapWrapper} from '../facade/collection'; | import {StringMapWrapper} from '../facade/collection'; | ||||||
| @ -72,7 +70,7 @@ export class AnimationCompiler { | |||||||
|       var errorMessageStr = |       var errorMessageStr = | ||||||
|           `Animation parsing for ${component.type.name} has failed due to the following errors:`; |           `Animation parsing for ${component.type.name} has failed due to the following errors:`; | ||||||
|       groupedErrors.forEach(error => errorMessageStr += `\n- ${error}`); |       groupedErrors.forEach(error => errorMessageStr += `\n- ${error}`); | ||||||
|       throw new BaseException(errorMessageStr); |       throw new Error(errorMessageStr); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     animationCompilationCache.set(component, compiledAnimations); |     animationCompilationCache.set(component, compiledAnimations); | ||||||
|  | |||||||
| @ -6,7 +6,7 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException, ChangeDetectionStrategy, SchemaMetadata, Type, ViewEncapsulation} from '@angular/core'; | import {ChangeDetectionStrategy, SchemaMetadata, Type, ViewEncapsulation} from '@angular/core'; | ||||||
| 
 | 
 | ||||||
| import {LifecycleHooks, reflector} from '../core_private'; | import {LifecycleHooks, reflector} from '../core_private'; | ||||||
| 
 | 
 | ||||||
| @ -17,7 +17,7 @@ import {getUrlScheme} from './url_resolver'; | |||||||
| import {sanitizeIdentifier, splitAtColon} from './util'; | import {sanitizeIdentifier, splitAtColon} from './util'; | ||||||
| 
 | 
 | ||||||
| function unimplemented(): any { | function unimplemented(): any { | ||||||
|   throw new BaseException('unimplemented'); |   throw new Error('unimplemented'); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // group 0: "[prop] or (event) or @trigger"
 | // group 0: "[prop] or (event) or @trigger"
 | ||||||
| @ -269,7 +269,7 @@ export class CompileIdentifierMap<KEY extends CompileMetadataWithIdentifier, VAL | |||||||
|   add(token: KEY, value: VALUE) { |   add(token: KEY, value: VALUE) { | ||||||
|     var existing = this.get(token); |     var existing = this.get(token); | ||||||
|     if (isPresent(existing)) { |     if (isPresent(existing)) { | ||||||
|       throw new BaseException( |       throw new Error( | ||||||
|           `Cannot overwrite in a CompileIdentifierMap! Token: ${token.identifier.name}`); |           `Cannot overwrite in a CompileIdentifierMap! Token: ${token.identifier.name}`); | ||||||
|     } |     } | ||||||
|     this._tokens.push(token); |     this._tokens.push(token); | ||||||
| @ -398,7 +398,7 @@ export class CompileTemplateMetadata { | |||||||
|     this.animations = isPresent(animations) ? ListWrapper.flatten(animations) : []; |     this.animations = isPresent(animations) ? ListWrapper.flatten(animations) : []; | ||||||
|     this.ngContentSelectors = isPresent(ngContentSelectors) ? ngContentSelectors : []; |     this.ngContentSelectors = isPresent(ngContentSelectors) ? ngContentSelectors : []; | ||||||
|     if (isPresent(interpolation) && interpolation.length != 2) { |     if (isPresent(interpolation) && interpolation.length != 2) { | ||||||
|       throw new BaseException(`'interpolation' should have a start and an end symbol.`); |       throw new Error(`'interpolation' should have a start and an end symbol.`); | ||||||
|     } |     } | ||||||
|     this.interpolation = interpolation; |     this.interpolation = interpolation; | ||||||
|   } |   } | ||||||
|  | |||||||
| @ -6,13 +6,13 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException, ViewEncapsulation, isDevMode} from '@angular/core'; | import {ViewEncapsulation, isDevMode} from '@angular/core'; | ||||||
| 
 | 
 | ||||||
| import {CompileIdentifierMetadata} from './compile_metadata'; | import {CompileIdentifierMetadata} from './compile_metadata'; | ||||||
| import {Identifiers} from './identifiers'; | import {Identifiers} from './identifiers'; | ||||||
| 
 | 
 | ||||||
| function unimplemented(): any { | function unimplemented(): any { | ||||||
|   throw new BaseException('unimplemented'); |   throw new Error('unimplemented'); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export class CompilerConfig { | export class CompilerConfig { | ||||||
|  | |||||||
| @ -6,9 +6,9 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException} from '@angular/core'; |  | ||||||
| 
 | 
 | ||||||
| import * as chars from '../chars'; | import * as chars from '../chars'; | ||||||
|  | import {BaseError} from '../facade/errors'; | ||||||
| import {StringWrapper, isPresent, resolveEnumToken} from '../facade/lang'; | import {StringWrapper, isPresent, resolveEnumToken} from '../facade/lang'; | ||||||
| 
 | 
 | ||||||
| export enum CssTokenType { | export enum CssTokenType { | ||||||
| @ -86,7 +86,7 @@ export class CssLexer { | |||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export class CssScannerError extends BaseException { | export class CssScannerError extends BaseError { | ||||||
|   public rawMessage: string; |   public rawMessage: string; | ||||||
|   public message: string; |   public message: string; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -6,7 +6,7 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException, Injectable, ViewEncapsulation} from '@angular/core'; | import {Injectable, ViewEncapsulation} from '@angular/core'; | ||||||
| 
 | 
 | ||||||
| import {CompileDirectiveMetadata, CompileStylesheetMetadata, CompileTemplateMetadata, CompileTypeMetadata} from './compile_metadata'; | import {CompileDirectiveMetadata, CompileStylesheetMetadata, CompileTemplateMetadata, CompileTypeMetadata} from './compile_metadata'; | ||||||
| import {CompilerConfig} from './config'; | import {CompilerConfig} from './config'; | ||||||
| @ -63,7 +63,7 @@ export class DirectiveNormalizer { | |||||||
|     } else if (directive.template.templateUrl) { |     } else if (directive.template.templateUrl) { | ||||||
|       normalizedTemplateAsync = this.normalizeTemplateAsync(directive.type, directive.template); |       normalizedTemplateAsync = this.normalizeTemplateAsync(directive.type, directive.template); | ||||||
|     } else { |     } else { | ||||||
|       throw new BaseException(`No template specified for component ${directive.type.name}`); |       throw new Error(`No template specified for component ${directive.type.name}`); | ||||||
|     } |     } | ||||||
|     if (normalizedTemplateSync && normalizedTemplateSync.styleUrls.length === 0) { |     if (normalizedTemplateSync && normalizedTemplateSync.styleUrls.length === 0) { | ||||||
|       // sync case
 |       // sync case
 | ||||||
| @ -102,7 +102,7 @@ export class DirectiveNormalizer { | |||||||
|         this._htmlParser.parse(template, directiveType.name, false, interpolationConfig); |         this._htmlParser.parse(template, directiveType.name, false, interpolationConfig); | ||||||
|     if (rootNodesAndErrors.errors.length > 0) { |     if (rootNodesAndErrors.errors.length > 0) { | ||||||
|       const errorString = rootNodesAndErrors.errors.join('\n'); |       const errorString = rootNodesAndErrors.errors.join('\n'); | ||||||
|       throw new BaseException(`Template parse errors:\n${errorString}`); |       throw new Error(`Template parse errors:\n${errorString}`); | ||||||
|     } |     } | ||||||
|     const templateMetadataStyles = this.normalizeStylesheet(new CompileStylesheetMetadata({ |     const templateMetadataStyles = this.normalizeStylesheet(new CompileStylesheetMetadata({ | ||||||
|       styles: templateMeta.styles, |       styles: templateMeta.styles, | ||||||
|  | |||||||
| @ -9,7 +9,6 @@ | |||||||
| import {ComponentMetadata, DirectiveMetadata, HostBindingMetadata, HostListenerMetadata, Injectable, InputMetadata, OutputMetadata, QueryMetadata, Type, resolveForwardRef} from '@angular/core'; | import {ComponentMetadata, DirectiveMetadata, HostBindingMetadata, HostListenerMetadata, Injectable, InputMetadata, OutputMetadata, QueryMetadata, Type, resolveForwardRef} from '@angular/core'; | ||||||
| import {ReflectorReader, reflector} from '../core_private'; | import {ReflectorReader, reflector} from '../core_private'; | ||||||
| import {StringMapWrapper} from './facade/collection'; | import {StringMapWrapper} from './facade/collection'; | ||||||
| import {BaseException} from './facade/exceptions'; |  | ||||||
| import {isPresent, stringify} from './facade/lang'; | import {isPresent, stringify} from './facade/lang'; | ||||||
| import {splitAtColon} from './util'; | import {splitAtColon} from './util'; | ||||||
| 
 | 
 | ||||||
| @ -41,7 +40,7 @@ export class DirectiveResolver { | |||||||
|       } |       } | ||||||
|     } |     } | ||||||
|     if (throwIfNotFound) { |     if (throwIfNotFound) { | ||||||
|       throw new BaseException(`No Directive annotation found on ${stringify(type)}`); |       throw new Error(`No Directive annotation found on ${stringify(type)}`); | ||||||
|     } |     } | ||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
| @ -98,7 +97,7 @@ export class DirectiveResolver { | |||||||
|       inputs.forEach((inputDef: string) => { |       inputs.forEach((inputDef: string) => { | ||||||
|         const publicName = this._extractPublicName(inputDef); |         const publicName = this._extractPublicName(inputDef); | ||||||
|         if (inputNames.indexOf(publicName) > -1) { |         if (inputNames.indexOf(publicName) > -1) { | ||||||
|           throw new BaseException( |           throw new Error( | ||||||
|               `Input '${publicName}' defined multiple times in '${stringify(directiveType)}'`); |               `Input '${publicName}' defined multiple times in '${stringify(directiveType)}'`); | ||||||
|         } |         } | ||||||
|       }); |       }); | ||||||
| @ -116,7 +115,7 @@ export class DirectiveResolver { | |||||||
|       outputs.forEach((outputDef: string) => { |       outputs.forEach((outputDef: string) => { | ||||||
|         const publicName = this._extractPublicName(outputDef); |         const publicName = this._extractPublicName(outputDef); | ||||||
|         if (outputNames.indexOf(publicName) > -1) { |         if (outputNames.indexOf(publicName) > -1) { | ||||||
|           throw new BaseException( |           throw new Error( | ||||||
|               `Output event '${publicName}' defined multiple times in '${stringify(directiveType)}'`); |               `Output event '${publicName}' defined multiple times in '${stringify(directiveType)}'`); | ||||||
|         } |         } | ||||||
|       }); |       }); | ||||||
|  | |||||||
| @ -14,7 +14,6 @@ import {StringMapWrapper} from '../src/facade/collection'; | |||||||
| import {assertArrayOfStrings, assertInterpolationSymbols} from './assertions'; | import {assertArrayOfStrings, assertInterpolationSymbols} from './assertions'; | ||||||
| import * as cpl from './compile_metadata'; | import * as cpl from './compile_metadata'; | ||||||
| import {DirectiveResolver} from './directive_resolver'; | import {DirectiveResolver} from './directive_resolver'; | ||||||
| import {BaseException} from './facade/exceptions'; |  | ||||||
| import {isArray, isBlank, isPresent, isString, stringify} from './facade/lang'; | import {isArray, isBlank, isPresent, isString, stringify} from './facade/lang'; | ||||||
| import {Identifiers, identifierToken} from './identifiers'; | import {Identifiers, identifierToken} from './identifiers'; | ||||||
| import {hasLifecycleHook} from './lifecycle_reflector'; | import {hasLifecycleHook} from './lifecycle_reflector'; | ||||||
| @ -161,8 +160,7 @@ export class CompileMetadataResolver { | |||||||
|         } |         } | ||||||
|       } else { |       } else { | ||||||
|         if (!selector) { |         if (!selector) { | ||||||
|           throw new BaseException( |           throw new Error(`Directive ${stringify(directiveType)} has no selector, please add it!`); | ||||||
|               `Directive ${stringify(directiveType)} has no selector, please add it!`); |  | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
| 
 | 
 | ||||||
| @ -235,12 +233,12 @@ export class CompileMetadataResolver { | |||||||
|           if (importedModuleType) { |           if (importedModuleType) { | ||||||
|             let importedMeta = this.getNgModuleMetadata(importedModuleType, false); |             let importedMeta = this.getNgModuleMetadata(importedModuleType, false); | ||||||
|             if (importedMeta === null) { |             if (importedMeta === null) { | ||||||
|               throw new BaseException( |               throw new Error( | ||||||
|                   `Unexpected ${this._getTypeDescriptor(importedType)} '${stringify(importedType)}' imported by the module '${stringify(moduleType)}'`); |                   `Unexpected ${this._getTypeDescriptor(importedType)} '${stringify(importedType)}' imported by the module '${stringify(moduleType)}'`); | ||||||
|             } |             } | ||||||
|             importedModules.push(importedMeta); |             importedModules.push(importedMeta); | ||||||
|           } else { |           } else { | ||||||
|             throw new BaseException( |             throw new Error( | ||||||
|                 `Unexpected value '${stringify(importedType)}' imported by the module '${stringify(moduleType)}'`); |                 `Unexpected value '${stringify(importedType)}' imported by the module '${stringify(moduleType)}'`); | ||||||
|           } |           } | ||||||
|         }); |         }); | ||||||
| @ -249,7 +247,7 @@ export class CompileMetadataResolver { | |||||||
|       if (meta.exports) { |       if (meta.exports) { | ||||||
|         flattenArray(meta.exports).forEach((exportedType) => { |         flattenArray(meta.exports).forEach((exportedType) => { | ||||||
|           if (!isValidType(exportedType)) { |           if (!isValidType(exportedType)) { | ||||||
|             throw new BaseException( |             throw new Error( | ||||||
|                 `Unexpected value '${stringify(exportedType)}' exported by the module '${stringify(moduleType)}'`); |                 `Unexpected value '${stringify(exportedType)}' exported by the module '${stringify(moduleType)}'`); | ||||||
|           } |           } | ||||||
|           let exportedDirMeta: cpl.CompileDirectiveMetadata; |           let exportedDirMeta: cpl.CompileDirectiveMetadata; | ||||||
| @ -262,7 +260,7 @@ export class CompileMetadataResolver { | |||||||
|           } else if (exportedModuleMeta = this.getNgModuleMetadata(exportedType, false)) { |           } else if (exportedModuleMeta = this.getNgModuleMetadata(exportedType, false)) { | ||||||
|             exportedModules.push(exportedModuleMeta); |             exportedModules.push(exportedModuleMeta); | ||||||
|           } else { |           } else { | ||||||
|             throw new BaseException( |             throw new Error( | ||||||
|                 `Unexpected ${this._getTypeDescriptor(exportedType)} '${stringify(exportedType)}' exported by the module '${stringify(moduleType)}'`); |                 `Unexpected ${this._getTypeDescriptor(exportedType)} '${stringify(exportedType)}' exported by the module '${stringify(moduleType)}'`); | ||||||
|           } |           } | ||||||
|         }); |         }); | ||||||
| @ -275,7 +273,7 @@ export class CompileMetadataResolver { | |||||||
|       if (meta.declarations) { |       if (meta.declarations) { | ||||||
|         flattenArray(meta.declarations).forEach((declaredType) => { |         flattenArray(meta.declarations).forEach((declaredType) => { | ||||||
|           if (!isValidType(declaredType)) { |           if (!isValidType(declaredType)) { | ||||||
|             throw new BaseException( |             throw new Error( | ||||||
|                 `Unexpected value '${stringify(declaredType)}' declared by the module '${stringify(moduleType)}'`); |                 `Unexpected value '${stringify(declaredType)}' declared by the module '${stringify(moduleType)}'`); | ||||||
|           } |           } | ||||||
|           let declaredDirMeta: cpl.CompileDirectiveMetadata; |           let declaredDirMeta: cpl.CompileDirectiveMetadata; | ||||||
| @ -287,7 +285,7 @@ export class CompileMetadataResolver { | |||||||
|             this._addPipeToModule( |             this._addPipeToModule( | ||||||
|                 declaredPipeMeta, moduleType, transitiveModule, declaredPipes, true); |                 declaredPipeMeta, moduleType, transitiveModule, declaredPipes, true); | ||||||
|           } else { |           } else { | ||||||
|             throw new BaseException( |             throw new Error( | ||||||
|                 `Unexpected ${this._getTypeDescriptor(declaredType)} '${stringify(declaredType)}' declared by the module '${stringify(moduleType)}'`); |                 `Unexpected ${this._getTypeDescriptor(declaredType)} '${stringify(declaredType)}' declared by the module '${stringify(moduleType)}'`); | ||||||
|           } |           } | ||||||
|         }); |         }); | ||||||
| @ -343,13 +341,13 @@ export class CompileMetadataResolver { | |||||||
|   private _verifyModule(moduleMeta: cpl.CompileNgModuleMetadata) { |   private _verifyModule(moduleMeta: cpl.CompileNgModuleMetadata) { | ||||||
|     moduleMeta.exportedDirectives.forEach((dirMeta) => { |     moduleMeta.exportedDirectives.forEach((dirMeta) => { | ||||||
|       if (!moduleMeta.transitiveModule.directivesSet.has(dirMeta.type.runtime)) { |       if (!moduleMeta.transitiveModule.directivesSet.has(dirMeta.type.runtime)) { | ||||||
|         throw new BaseException( |         throw new Error( | ||||||
|             `Can't export directive ${stringify(dirMeta.type.runtime)} from ${stringify(moduleMeta.type.runtime)} as it was neither declared nor imported!`); |             `Can't export directive ${stringify(dirMeta.type.runtime)} from ${stringify(moduleMeta.type.runtime)} as it was neither declared nor imported!`); | ||||||
|       } |       } | ||||||
|     }); |     }); | ||||||
|     moduleMeta.exportedPipes.forEach((pipeMeta) => { |     moduleMeta.exportedPipes.forEach((pipeMeta) => { | ||||||
|       if (!moduleMeta.transitiveModule.pipesSet.has(pipeMeta.type.runtime)) { |       if (!moduleMeta.transitiveModule.pipesSet.has(pipeMeta.type.runtime)) { | ||||||
|         throw new BaseException( |         throw new Error( | ||||||
|             `Can't export pipe ${stringify(pipeMeta.type.runtime)} from ${stringify(moduleMeta.type.runtime)} as it was neither declared nor imported!`); |             `Can't export pipe ${stringify(pipeMeta.type.runtime)} from ${stringify(moduleMeta.type.runtime)} as it was neither declared nor imported!`); | ||||||
|       } |       } | ||||||
|     }); |     }); | ||||||
| @ -372,7 +370,7 @@ export class CompileMetadataResolver { | |||||||
|   private _addTypeToModule(type: Type<any>, moduleType: Type<any>) { |   private _addTypeToModule(type: Type<any>, moduleType: Type<any>) { | ||||||
|     const oldModule = this._ngModuleOfTypes.get(type); |     const oldModule = this._ngModuleOfTypes.get(type); | ||||||
|     if (oldModule && oldModule !== moduleType) { |     if (oldModule && oldModule !== moduleType) { | ||||||
|       throw new BaseException( |       throw new Error( | ||||||
|           `Type ${stringify(type)} is part of the declarations of 2 modules: ${stringify(oldModule)} and ${stringify(moduleType)}!`); |           `Type ${stringify(type)} is part of the declarations of 2 modules: ${stringify(oldModule)} and ${stringify(moduleType)}!`); | ||||||
|     } |     } | ||||||
|     this._ngModuleOfTypes.set(type, moduleType); |     this._ngModuleOfTypes.set(type, moduleType); | ||||||
| @ -529,7 +527,7 @@ export class CompileMetadataResolver { | |||||||
|       let depsTokens = |       let depsTokens = | ||||||
|           dependenciesMetadata.map((dep) => { return dep ? stringify(dep.token) : '?'; }) |           dependenciesMetadata.map((dep) => { return dep ? stringify(dep.token) : '?'; }) | ||||||
|               .join(', '); |               .join(', '); | ||||||
|       throw new BaseException( |       throw new Error( | ||||||
|           `Can't resolve all parameters for ${stringify(typeOrFunc)}: (${depsTokens}).`); |           `Can't resolve all parameters for ${stringify(typeOrFunc)}: (${depsTokens}).`); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -589,7 +587,7 @@ export class CompileMetadataResolver { | |||||||
|                                  [])) |                                  [])) | ||||||
|                                 .join(', '); |                                 .join(', '); | ||||||
| 
 | 
 | ||||||
|         throw new BaseException( |         throw new Error( | ||||||
|             `Invalid ${debugInfo ? debugInfo : 'provider'} - only instances of Provider and Type are allowed, got: [${providersInfo}]`); |             `Invalid ${debugInfo ? debugInfo : 'provider'} - only instances of Provider and Type are allowed, got: [${providersInfo}]`); | ||||||
|       } |       } | ||||||
|       if (compileProvider) { |       if (compileProvider) { | ||||||
| @ -603,11 +601,10 @@ export class CompileMetadataResolver { | |||||||
|     let components: cpl.CompileTypeMetadata[] = []; |     let components: cpl.CompileTypeMetadata[] = []; | ||||||
|     let collectedIdentifiers: cpl.CompileIdentifierMetadata[] = []; |     let collectedIdentifiers: cpl.CompileIdentifierMetadata[] = []; | ||||||
|     if (provider.useFactory || provider.useExisting || provider.useClass) { |     if (provider.useFactory || provider.useExisting || provider.useClass) { | ||||||
|       throw new BaseException(`The ANALYZE_FOR_ENTRY_COMPONENTS token only supports useValue!`); |       throw new Error(`The ANALYZE_FOR_ENTRY_COMPONENTS token only supports useValue!`); | ||||||
|     } |     } | ||||||
|     if (!provider.multi) { |     if (!provider.multi) { | ||||||
|       throw new BaseException( |       throw new Error(`The ANALYZE_FOR_ENTRY_COMPONENTS token only supports 'multi = true'!`); | ||||||
|           `The ANALYZE_FOR_ENTRY_COMPONENTS token only supports 'multi = true'!`); |  | ||||||
|     } |     } | ||||||
|     convertToCompileValue(provider.useValue, collectedIdentifiers); |     convertToCompileValue(provider.useValue, collectedIdentifiers); | ||||||
|     collectedIdentifiers.forEach((identifier) => { |     collectedIdentifiers.forEach((identifier) => { | ||||||
| @ -665,7 +662,7 @@ export class CompileMetadataResolver { | |||||||
|       selectors = q.varBindings.map(varName => this.getTokenMetadata(varName)); |       selectors = q.varBindings.map(varName => this.getTokenMetadata(varName)); | ||||||
|     } else { |     } else { | ||||||
|       if (!isPresent(q.selector)) { |       if (!isPresent(q.selector)) { | ||||||
|         throw new BaseException( |         throw new Error( | ||||||
|             `Can't construct a query for the property "${propertyName}" of "${stringify(typeOrFunc)}" since the query selector wasn't defined.`); |             `Can't construct a query for the property "${propertyName}" of "${stringify(typeOrFunc)}" since the query selector wasn't defined.`); | ||||||
|       } |       } | ||||||
|       selectors = [this.getTokenMetadata(q.selector)]; |       selectors = [this.getTokenMetadata(q.selector)]; | ||||||
|  | |||||||
| @ -9,7 +9,6 @@ | |||||||
| import {Injectable, NgModuleMetadata, Type} from '@angular/core'; | import {Injectable, NgModuleMetadata, Type} from '@angular/core'; | ||||||
| 
 | 
 | ||||||
| import {ReflectorReader, reflector} from '../core_private'; | import {ReflectorReader, reflector} from '../core_private'; | ||||||
| import {BaseException} from '../src/facade/exceptions'; |  | ||||||
| import {isPresent, stringify} from './facade/lang'; | import {isPresent, stringify} from './facade/lang'; | ||||||
| 
 | 
 | ||||||
| function _isNgModuleMetadata(obj: any): obj is NgModuleMetadata { | function _isNgModuleMetadata(obj: any): obj is NgModuleMetadata { | ||||||
| @ -31,7 +30,7 @@ export class NgModuleResolver { | |||||||
|       return ngModuleMeta; |       return ngModuleMeta; | ||||||
|     } else { |     } else { | ||||||
|       if (throwIfNotFound) { |       if (throwIfNotFound) { | ||||||
|         throw new BaseException(`No NgModule metadata found for '${stringify(type)}'.`); |         throw new Error(`No NgModule metadata found for '${stringify(type)}'.`); | ||||||
|       } |       } | ||||||
|       return null; |       return null; | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -6,7 +6,7 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException, SchemaMetadata} from '@angular/core'; | import {SchemaMetadata} from '@angular/core'; | ||||||
| 
 | 
 | ||||||
| import {CompileDirectiveMetadata, CompileIdentifierMetadata, CompileNgModuleMetadata, CompilePipeMetadata, CompileProviderMetadata, CompileTokenMetadata, StaticSymbol, createHostComponentMeta} from './compile_metadata'; | import {CompileDirectiveMetadata, CompileIdentifierMetadata, CompileNgModuleMetadata, CompilePipeMetadata, CompileProviderMetadata, CompileTokenMetadata, StaticSymbol, createHostComponentMeta} from './compile_metadata'; | ||||||
| import {DirectiveNormalizer} from './directive_normalizer'; | import {DirectiveNormalizer} from './directive_normalizer'; | ||||||
| @ -73,8 +73,7 @@ export class OfflineCompiler { | |||||||
|           const compMeta = this._metadataResolver.getDirectiveMetadata(<any>compType); |           const compMeta = this._metadataResolver.getDirectiveMetadata(<any>compType); | ||||||
|           const ngModule = ngModulesSummary.ngModuleByComponent.get(compType); |           const ngModule = ngModulesSummary.ngModuleByComponent.get(compType); | ||||||
|           if (!ngModule) { |           if (!ngModule) { | ||||||
|             throw new BaseException( |             throw new Error(`Cannot determine the module for component ${compMeta.type.name}!`); | ||||||
|                 `Cannot determine the module for component ${compMeta.type.name}!`); |  | ||||||
|           } |           } | ||||||
|           return Promise |           return Promise | ||||||
|               .all([compMeta, ...ngModule.transitiveModule.directives].map( |               .all([compMeta, ...ngModule.transitiveModule.directives].map( | ||||||
| @ -217,7 +216,7 @@ function _stylesModuleUrl(stylesheetUrl: string, shim: boolean, suffix: string): | |||||||
| 
 | 
 | ||||||
| function _assertComponent(meta: CompileDirectiveMetadata) { | function _assertComponent(meta: CompileDirectiveMetadata) { | ||||||
|   if (!meta.isComponent) { |   if (!meta.isComponent) { | ||||||
|     throw new BaseException(`Could not compile '${meta.type.name}' because it is not a component.`); |     throw new Error(`Could not compile '${meta.type.name}' because it is not a component.`); | ||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -6,7 +6,6 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException} from '@angular/core'; |  | ||||||
| import {StringWrapper, isBlank, isPresent, isString} from '../facade/lang'; | import {StringWrapper, isBlank, isPresent, isString} from '../facade/lang'; | ||||||
| 
 | 
 | ||||||
| import * as o from './output_ast'; | import * as o from './output_ast'; | ||||||
| @ -236,7 +235,7 @@ export abstract class AbstractEmitterVisitor implements o.StatementVisitor, o.Ex | |||||||
|           varName = CATCH_STACK_VAR.name; |           varName = CATCH_STACK_VAR.name; | ||||||
|           break; |           break; | ||||||
|         default: |         default: | ||||||
|           throw new BaseException(`Unknown builtin variable ${ast.builtin}`); |           throw new Error(`Unknown builtin variable ${ast.builtin}`); | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|     ctx.print(varName); |     ctx.print(varName); | ||||||
| @ -332,7 +331,7 @@ export abstract class AbstractEmitterVisitor implements o.StatementVisitor, o.Ex | |||||||
|         opStr = '>='; |         opStr = '>='; | ||||||
|         break; |         break; | ||||||
|       default: |       default: | ||||||
|         throw new BaseException(`Unknown operator ${ast.operator}`); |         throw new Error(`Unknown operator ${ast.operator}`); | ||||||
|     } |     } | ||||||
|     ctx.print(`(`); |     ctx.print(`(`); | ||||||
|     ast.lhs.visitExpression(this, ctx); |     ast.lhs.visitExpression(this, ctx); | ||||||
|  | |||||||
| @ -6,7 +6,6 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException} from '@angular/core'; |  | ||||||
| import {isPresent} from '../facade/lang'; | import {isPresent} from '../facade/lang'; | ||||||
| 
 | 
 | ||||||
| import {AbstractEmitterVisitor, CATCH_ERROR_VAR, CATCH_STACK_VAR, EmitterVisitorContext} from './abstract_emitter'; | import {AbstractEmitterVisitor, CATCH_ERROR_VAR, CATCH_STACK_VAR, EmitterVisitorContext} from './abstract_emitter'; | ||||||
| @ -75,7 +74,7 @@ export abstract class AbstractJsEmitterVisitor extends AbstractEmitterVisitor { | |||||||
|     if (ast.builtin === o.BuiltinVar.This) { |     if (ast.builtin === o.BuiltinVar.This) { | ||||||
|       ctx.print('self'); |       ctx.print('self'); | ||||||
|     } else if (ast.builtin === o.BuiltinVar.Super) { |     } else if (ast.builtin === o.BuiltinVar.Super) { | ||||||
|       throw new BaseException( |       throw new Error( | ||||||
|           `'super' needs to be handled at a parent ast node, not at the variable level!`); |           `'super' needs to be handled at a parent ast node, not at the variable level!`); | ||||||
|     } else { |     } else { | ||||||
|       super.visitReadVarExpr(ast, ctx); |       super.visitReadVarExpr(ast, ctx); | ||||||
| @ -161,7 +160,7 @@ export abstract class AbstractJsEmitterVisitor extends AbstractEmitterVisitor { | |||||||
|         name = 'bind'; |         name = 'bind'; | ||||||
|         break; |         break; | ||||||
|       default: |       default: | ||||||
|         throw new BaseException(`Unknown builtin method: ${method}`); |         throw new Error(`Unknown builtin method: ${method}`); | ||||||
|     } |     } | ||||||
|     return name; |     return name; | ||||||
|   } |   } | ||||||
|  | |||||||
| @ -6,7 +6,6 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException} from '@angular/core'; |  | ||||||
| 
 | 
 | ||||||
| import {StringWrapper, evalExpression, isBlank, isPresent, isString} from '../facade/lang'; | import {StringWrapper, evalExpression, isBlank, isPresent, isString} from '../facade/lang'; | ||||||
| 
 | 
 | ||||||
| @ -40,7 +39,7 @@ class JsEmitterVisitor extends AbstractJsEmitterVisitor { | |||||||
| 
 | 
 | ||||||
|   visitExternalExpr(ast: o.ExternalExpr, ctx: EmitterVisitorContext): any { |   visitExternalExpr(ast: o.ExternalExpr, ctx: EmitterVisitorContext): any { | ||||||
|     if (isBlank(ast.value.name)) { |     if (isBlank(ast.value.name)) { | ||||||
|       throw new BaseException(`Internal error: unknown identifier ${ast.value}`); |       throw new Error(`Internal error: unknown identifier ${ast.value}`); | ||||||
|     } |     } | ||||||
|     if (isPresent(ast.value.moduleUrl) && ast.value.moduleUrl != this._moduleUrl) { |     if (isPresent(ast.value.moduleUrl) && ast.value.moduleUrl != this._moduleUrl) { | ||||||
|       var prefix = this.importsWithPrefixes.get(ast.value.moduleUrl); |       var prefix = this.importsWithPrefixes.get(ast.value.moduleUrl); | ||||||
|  | |||||||
| @ -6,7 +6,6 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException} from '@angular/core'; |  | ||||||
| 
 | 
 | ||||||
| import {CompileIdentifierMetadata} from '../compile_metadata'; | import {CompileIdentifierMetadata} from '../compile_metadata'; | ||||||
| import {StringMapWrapper} from '../facade/collection'; | import {StringMapWrapper} from '../facade/collection'; | ||||||
|  | |||||||
| @ -6,7 +6,6 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException} from '@angular/core'; |  | ||||||
| 
 | 
 | ||||||
| import {ListWrapper} from '../facade/collection'; | import {ListWrapper} from '../facade/collection'; | ||||||
| import {isPresent} from '../facade/lang'; | import {isPresent} from '../facade/lang'; | ||||||
| @ -104,7 +103,7 @@ class StatementInterpreter implements o.StatementVisitor, o.ExpressionVisitor { | |||||||
|       } |       } | ||||||
|       currCtx = currCtx.parent; |       currCtx = currCtx.parent; | ||||||
|     } |     } | ||||||
|     throw new BaseException(`Not declared variable ${expr.name}`); |     throw new Error(`Not declared variable ${expr.name}`); | ||||||
|   } |   } | ||||||
|   visitReadVarExpr(ast: o.ReadVarExpr, ctx: _ExecutionContext): any { |   visitReadVarExpr(ast: o.ReadVarExpr, ctx: _ExecutionContext): any { | ||||||
|     var varName = ast.name; |     var varName = ast.name; | ||||||
| @ -121,7 +120,7 @@ class StatementInterpreter implements o.StatementVisitor, o.ExpressionVisitor { | |||||||
|           varName = CATCH_STACK_VAR; |           varName = CATCH_STACK_VAR; | ||||||
|           break; |           break; | ||||||
|         default: |         default: | ||||||
|           throw new BaseException(`Unknown builtin variable ${ast.builtin}`); |           throw new Error(`Unknown builtin variable ${ast.builtin}`); | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|     var currCtx = ctx; |     var currCtx = ctx; | ||||||
| @ -131,7 +130,7 @@ class StatementInterpreter implements o.StatementVisitor, o.ExpressionVisitor { | |||||||
|       } |       } | ||||||
|       currCtx = currCtx.parent; |       currCtx = currCtx.parent; | ||||||
|     } |     } | ||||||
|     throw new BaseException(`Not declared variable ${varName}`); |     throw new Error(`Not declared variable ${varName}`); | ||||||
|   } |   } | ||||||
|   visitWriteKeyExpr(expr: o.WriteKeyExpr, ctx: _ExecutionContext): any { |   visitWriteKeyExpr(expr: o.WriteKeyExpr, ctx: _ExecutionContext): any { | ||||||
|     var receiver = expr.receiver.visitExpression(this, ctx); |     var receiver = expr.receiver.visitExpression(this, ctx); | ||||||
| @ -163,7 +162,7 @@ class StatementInterpreter implements o.StatementVisitor, o.ExpressionVisitor { | |||||||
|           result = receiver.bind(args[0]); |           result = receiver.bind(args[0]); | ||||||
|           break; |           break; | ||||||
|         default: |         default: | ||||||
|           throw new BaseException(`Unknown builtin method ${expr.builtin}`); |           throw new Error(`Unknown builtin method ${expr.builtin}`); | ||||||
|       } |       } | ||||||
|     } else { |     } else { | ||||||
|       result = receiver[expr.name].apply(receiver, args); |       result = receiver[expr.name].apply(receiver, args); | ||||||
| @ -281,7 +280,7 @@ class StatementInterpreter implements o.StatementVisitor, o.ExpressionVisitor { | |||||||
|       case o.BinaryOperator.BiggerEquals: |       case o.BinaryOperator.BiggerEquals: | ||||||
|         return lhs() >= rhs(); |         return lhs() >= rhs(); | ||||||
|       default: |       default: | ||||||
|         throw new BaseException(`Unknown operator ${ast.operator}`); |         throw new Error(`Unknown operator ${ast.operator}`); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|   visitReadPropExpr(ast: o.ReadPropExpr, ctx: _ExecutionContext): any { |   visitReadPropExpr(ast: o.ReadPropExpr, ctx: _ExecutionContext): any { | ||||||
|  | |||||||
| @ -6,7 +6,7 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException, Injectable} from '@angular/core'; | import {Injectable} from '@angular/core'; | ||||||
| 
 | 
 | ||||||
| import {Math, isBlank, isPresent} from '../facade/lang'; | import {Math, isBlank, isPresent} from '../facade/lang'; | ||||||
| 
 | 
 | ||||||
| @ -32,7 +32,7 @@ export class AssetUrl { | |||||||
|     if (allowNonMatching) { |     if (allowNonMatching) { | ||||||
|       return null; |       return null; | ||||||
|     } |     } | ||||||
|     throw new BaseException(`Url ${url} is not a valid asset: url`); |     throw new Error(`Url ${url} is not a valid asset: url`); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   constructor(public packageName: string, public firstLevelDir: string, public modulePath: string) { |   constructor(public packageName: string, public firstLevelDir: string, public modulePath: string) { | ||||||
|  | |||||||
| @ -6,7 +6,6 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException} from '@angular/core'; |  | ||||||
| 
 | 
 | ||||||
| import {CompileIdentifierMetadata} from '../compile_metadata'; | import {CompileIdentifierMetadata} from '../compile_metadata'; | ||||||
| import {isArray, isBlank, isPresent} from '../facade/lang'; | import {isArray, isBlank, isPresent} from '../facade/lang'; | ||||||
| @ -35,7 +34,7 @@ export function debugOutputAstAsTypeScript(ast: o.Statement | o.Expression | o.T | |||||||
|     } else if (ast instanceof o.Type) { |     } else if (ast instanceof o.Type) { | ||||||
|       ast.visitType(converter, ctx); |       ast.visitType(converter, ctx); | ||||||
|     } else { |     } else { | ||||||
|       throw new BaseException(`Don't know how to print debug info for ${ast}`); |       throw new Error(`Don't know how to print debug info for ${ast}`); | ||||||
|     } |     } | ||||||
|   }); |   }); | ||||||
|   return ctx.toSource(); |   return ctx.toSource(); | ||||||
| @ -249,7 +248,7 @@ class _TsEmitterVisitor extends AbstractEmitterVisitor implements o.TypeVisitor | |||||||
|         typeStr = 'string'; |         typeStr = 'string'; | ||||||
|         break; |         break; | ||||||
|       default: |       default: | ||||||
|         throw new BaseException(`Unsupported builtin type ${type.name}`); |         throw new Error(`Unsupported builtin type ${type.name}`); | ||||||
|     } |     } | ||||||
|     ctx.print(typeStr); |     ctx.print(typeStr); | ||||||
|     return null; |     return null; | ||||||
| @ -286,7 +285,7 @@ class _TsEmitterVisitor extends AbstractEmitterVisitor implements o.TypeVisitor | |||||||
|         name = 'bind'; |         name = 'bind'; | ||||||
|         break; |         break; | ||||||
|       default: |       default: | ||||||
|         throw new BaseException(`Unknown builtin method: ${method}`); |         throw new Error(`Unknown builtin method: ${method}`); | ||||||
|     } |     } | ||||||
|     return name; |     return name; | ||||||
|   } |   } | ||||||
| @ -302,7 +301,7 @@ class _TsEmitterVisitor extends AbstractEmitterVisitor implements o.TypeVisitor | |||||||
|   private _visitIdentifier( |   private _visitIdentifier( | ||||||
|       value: CompileIdentifierMetadata, typeParams: o.Type[], ctx: EmitterVisitorContext): void { |       value: CompileIdentifierMetadata, typeParams: o.Type[], ctx: EmitterVisitorContext): void { | ||||||
|     if (isBlank(value.name)) { |     if (isBlank(value.name)) { | ||||||
|       throw new BaseException(`Internal error: unknown identifier ${value}`); |       throw new Error(`Internal error: unknown identifier ${value}`); | ||||||
|     } |     } | ||||||
|     if (isPresent(value.moduleUrl) && value.moduleUrl != this._moduleUrl) { |     if (isPresent(value.moduleUrl) && value.moduleUrl != this._moduleUrl) { | ||||||
|       var prefix = this.importsWithPrefixes.get(value.moduleUrl); |       var prefix = this.importsWithPrefixes.get(value.moduleUrl); | ||||||
|  | |||||||
| @ -6,7 +6,6 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException} from '@angular/core'; |  | ||||||
| 
 | 
 | ||||||
| import {CompileIdentifierMetadata} from '../compile_metadata'; | import {CompileIdentifierMetadata} from '../compile_metadata'; | ||||||
| import {StringMapWrapper} from '../facade/collection'; | import {StringMapWrapper} from '../facade/collection'; | ||||||
| @ -39,7 +38,7 @@ class _ValueOutputAstTransformer implements ValueTransformer { | |||||||
|     } else if (value instanceof o.Expression) { |     } else if (value instanceof o.Expression) { | ||||||
|       return value; |       return value; | ||||||
|     } else { |     } else { | ||||||
|       throw new BaseException(`Illegal state: Don't now how to compile value ${value}`); |       throw new Error(`Illegal state: Don't now how to compile value ${value}`); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | |||||||
| @ -10,7 +10,6 @@ import {Injectable, PipeMetadata, Type, resolveForwardRef} from '@angular/core'; | |||||||
| 
 | 
 | ||||||
| import {ReflectorReader, reflector} from '../core_private'; | import {ReflectorReader, reflector} from '../core_private'; | ||||||
| 
 | 
 | ||||||
| import {BaseException} from './facade/exceptions'; |  | ||||||
| import {isPresent, stringify} from './facade/lang'; | import {isPresent, stringify} from './facade/lang'; | ||||||
| 
 | 
 | ||||||
| function _isPipeMetadata(type: any): boolean { | function _isPipeMetadata(type: any): boolean { | ||||||
| @ -40,7 +39,7 @@ export class PipeResolver { | |||||||
|       } |       } | ||||||
|     } |     } | ||||||
|     if (throwIfNotFound) { |     if (throwIfNotFound) { | ||||||
|       throw new BaseException(`No Pipe decorator found on ${stringify(type)}`); |       throw new Error(`No Pipe decorator found on ${stringify(type)}`); | ||||||
|     } |     } | ||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
|  | |||||||
| @ -6,7 +6,6 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException} from '@angular/core'; |  | ||||||
| 
 | 
 | ||||||
| import {CompileDiDependencyMetadata, CompileDirectiveMetadata, CompileIdentifierMap, CompileNgModuleMetadata, CompileProviderMetadata, CompileQueryMetadata, CompileTokenMetadata, CompileTypeMetadata} from './compile_metadata'; | import {CompileDiDependencyMetadata, CompileDirectiveMetadata, CompileIdentifierMap, CompileNgModuleMetadata, CompileProviderMetadata, CompileQueryMetadata, CompileTokenMetadata, CompileTypeMetadata} from './compile_metadata'; | ||||||
| import {ListWrapper} from './facade/collection'; | import {ListWrapper} from './facade/collection'; | ||||||
| @ -303,7 +302,7 @@ export class NgModuleProviderAnalyzer { | |||||||
|         (provider) => { this._getOrCreateLocalProvider(provider.token, provider.eager); }); |         (provider) => { this._getOrCreateLocalProvider(provider.token, provider.eager); }); | ||||||
|     if (this._errors.length > 0) { |     if (this._errors.length > 0) { | ||||||
|       const errorString = this._errors.join('\n'); |       const errorString = this._errors.join('\n'); | ||||||
|       throw new BaseException(`Provider parse errors:\n${errorString}`); |       throw new Error(`Provider parse errors:\n${errorString}`); | ||||||
|     } |     } | ||||||
|     return this._transformedProviders.values(); |     return this._transformedProviders.values(); | ||||||
|   } |   } | ||||||
|  | |||||||
| @ -6,14 +6,11 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {Compiler, ComponentFactory, ComponentStillLoadingError, Injectable, Injector, ModuleWithComponentFactories, NgModuleFactory, OptionalMetadata, Provider, SchemaMetadata, SkipSelfMetadata, Type} from '@angular/core'; | import {Compiler, ComponentFactory, Injectable, Injector, ModuleWithComponentFactories, NgModuleFactory, OptionalMetadata, Provider, SchemaMetadata, SkipSelfMetadata, Type} from '@angular/core'; | ||||||
| 
 | import {ComponentStillLoadingError} from '../core_private'; | ||||||
| import {Console} from '../core_private'; |  | ||||||
| 
 |  | ||||||
| import {CompileDirectiveMetadata, CompileIdentifierMetadata, CompileNgModuleMetadata, CompilePipeMetadata, ProviderMeta, createHostComponentMeta} from './compile_metadata'; | import {CompileDirectiveMetadata, CompileIdentifierMetadata, CompileNgModuleMetadata, CompilePipeMetadata, ProviderMeta, createHostComponentMeta} from './compile_metadata'; | ||||||
| import {CompilerConfig} from './config'; | import {CompilerConfig} from './config'; | ||||||
| import {DirectiveNormalizer} from './directive_normalizer'; | import {DirectiveNormalizer} from './directive_normalizer'; | ||||||
| import {BaseException} from './facade/exceptions'; |  | ||||||
| import {isBlank, stringify} from './facade/lang'; | import {isBlank, stringify} from './facade/lang'; | ||||||
| import {CompileMetadataResolver} from './metadata_resolver'; | import {CompileMetadataResolver} from './metadata_resolver'; | ||||||
| import {NgModuleCompiler} from './ng_module_compiler'; | import {NgModuleCompiler} from './ng_module_compiler'; | ||||||
| @ -223,10 +220,10 @@ export class RuntimeCompiler implements Compiler { | |||||||
|                                       this._compiledTemplateCache.get(compType); |                                       this._compiledTemplateCache.get(compType); | ||||||
|     if (!compiledTemplate) { |     if (!compiledTemplate) { | ||||||
|       if (isHost) { |       if (isHost) { | ||||||
|         throw new BaseException( |         throw new Error( | ||||||
|             `Illegal state: Compiled view for component ${stringify(compType)} does not exist!`); |             `Illegal state: Compiled view for component ${stringify(compType)} does not exist!`); | ||||||
|       } else { |       } else { | ||||||
|         throw new BaseException( |         throw new Error( | ||||||
|             `Component ${stringify(compType)} is not part of any NgModule or the module has not been imported into your module.`); |             `Component ${stringify(compType)} is not part of any NgModule or the module has not been imported into your module.`); | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
| @ -236,7 +233,7 @@ export class RuntimeCompiler implements Compiler { | |||||||
|   private _assertComponentLoaded(compType: any, isHost: boolean): CompiledTemplate { |   private _assertComponentLoaded(compType: any, isHost: boolean): CompiledTemplate { | ||||||
|     const compiledTemplate = this._assertComponentKnown(compType, isHost); |     const compiledTemplate = this._assertComponentKnown(compType, isHost); | ||||||
|     if (compiledTemplate.loading) { |     if (compiledTemplate.loading) { | ||||||
|       throw new BaseException( |       throw new Error( | ||||||
|           `Illegal state: CompiledTemplate for ${stringify(compType)} (isHost: ${isHost}) is still loading!`); |           `Illegal state: CompiledTemplate for ${stringify(compType)} (isHost: ${isHost}) is still loading!`); | ||||||
|     } |     } | ||||||
|     return compiledTemplate; |     return compiledTemplate; | ||||||
| @ -335,7 +332,7 @@ class CompiledTemplate { | |||||||
|     }); |     }); | ||||||
|     this.proxyViewFactory = (...args: any[]) => { |     this.proxyViewFactory = (...args: any[]) => { | ||||||
|       if (!this._viewFactory) { |       if (!this._viewFactory) { | ||||||
|         throw new BaseException( |         throw new Error( | ||||||
|             `Illegal state: CompiledTemplate for ${stringify(this.compType)} is not compiled yet!`); |             `Illegal state: CompiledTemplate for ${stringify(this.compType)} is not compiled yet!`); | ||||||
|       } |       } | ||||||
|       return this._viewFactory.apply(null, args); |       return this._viewFactory.apply(null, args); | ||||||
| @ -355,7 +352,7 @@ class CompiledTemplate { | |||||||
| 
 | 
 | ||||||
|   get normalizedCompMeta(): CompileDirectiveMetadata { |   get normalizedCompMeta(): CompileDirectiveMetadata { | ||||||
|     if (this.loading) { |     if (this.loading) { | ||||||
|       throw new BaseException(`Template is still loading for ${this.compType.name}!`); |       throw new Error(`Template is still loading for ${this.compType.name}!`); | ||||||
|     } |     } | ||||||
|     return this._normalizedCompMeta; |     return this._normalizedCompMeta; | ||||||
|   } |   } | ||||||
| @ -370,7 +367,7 @@ class CompiledTemplate { | |||||||
| 
 | 
 | ||||||
| function assertComponent(meta: CompileDirectiveMetadata) { | function assertComponent(meta: CompileDirectiveMetadata) { | ||||||
|   if (!meta.isComponent) { |   if (!meta.isComponent) { | ||||||
|     throw new BaseException(`Could not compile '${meta.type.name}' because it is not a component.`); |     throw new Error(`Could not compile '${meta.type.name}' because it is not a component.`); | ||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -6,7 +6,6 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException} from '@angular/core'; |  | ||||||
| 
 | 
 | ||||||
| import {ListWrapper} from './facade/collection'; | import {ListWrapper} from './facade/collection'; | ||||||
| import {StringWrapper, isBlank, isPresent} from './facade/lang'; | import {StringWrapper, isBlank, isPresent} from './facade/lang'; | ||||||
| @ -50,7 +49,7 @@ export class CssSelector { | |||||||
|     while (isPresent(match = _SELECTOR_REGEXP.exec(selector))) { |     while (isPresent(match = _SELECTOR_REGEXP.exec(selector))) { | ||||||
|       if (isPresent(match[1])) { |       if (isPresent(match[1])) { | ||||||
|         if (inNot) { |         if (inNot) { | ||||||
|           throw new BaseException('Nesting :not is not allowed in a selector'); |           throw new Error('Nesting :not is not allowed in a selector'); | ||||||
|         } |         } | ||||||
|         inNot = true; |         inNot = true; | ||||||
|         current = new CssSelector(); |         current = new CssSelector(); | ||||||
| @ -71,7 +70,7 @@ export class CssSelector { | |||||||
|       } |       } | ||||||
|       if (isPresent(match[7])) { |       if (isPresent(match[7])) { | ||||||
|         if (inNot) { |         if (inNot) { | ||||||
|           throw new BaseException('Multiple selectors in :not are not supported'); |           throw new Error('Multiple selectors in :not are not supported'); | ||||||
|         } |         } | ||||||
|         _addResult(results, cssSelector); |         _addResult(results, cssSelector); | ||||||
|         cssSelector = current = new CssSelector(); |         cssSelector = current = new CssSelector(); | ||||||
|  | |||||||
| @ -6,7 +6,7 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException, Inject, Injectable, OpaqueToken, Optional, SchemaMetadata, SecurityContext} from '@angular/core'; | import {Inject, Injectable, OpaqueToken, Optional, SchemaMetadata, SecurityContext} from '@angular/core'; | ||||||
| 
 | 
 | ||||||
| import {Console, MAX_INTERPOLATION_VALUES} from '../../core_private'; | import {Console, MAX_INTERPOLATION_VALUES} from '../../core_private'; | ||||||
| import {CompileDirectiveMetadata, CompilePipeMetadata, CompileTokenMetadata, removeIdentifierDuplicates} from '../compile_metadata'; | import {CompileDirectiveMetadata, CompilePipeMetadata, CompileTokenMetadata, removeIdentifierDuplicates} from '../compile_metadata'; | ||||||
| @ -107,7 +107,7 @@ export class TemplateParser { | |||||||
|     } |     } | ||||||
|     if (errors.length > 0) { |     if (errors.length > 0) { | ||||||
|       const errorString = errors.join('\n'); |       const errorString = errors.join('\n'); | ||||||
|       throw new BaseException(`Template parse errors:\n${errorString}`); |       throw new Error(`Template parse errors:\n${errorString}`); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     return result.templateAst; |     return result.templateAst; | ||||||
| @ -236,8 +236,7 @@ class TemplateParseVisitor implements html.Visitor { | |||||||
|       this._checkPipes(ast, sourceSpan); |       this._checkPipes(ast, sourceSpan); | ||||||
|       if (isPresent(ast) && |       if (isPresent(ast) && | ||||||
|           (<Interpolation>ast.ast).expressions.length > MAX_INTERPOLATION_VALUES) { |           (<Interpolation>ast.ast).expressions.length > MAX_INTERPOLATION_VALUES) { | ||||||
|         throw new BaseException( |         throw new Error(`Only support at most ${MAX_INTERPOLATION_VALUES} interpolation values!`); | ||||||
|             `Only support at most ${MAX_INTERPOLATION_VALUES} interpolation values!`); |  | ||||||
|       } |       } | ||||||
|       return ast; |       return ast; | ||||||
|     } catch (e) { |     } catch (e) { | ||||||
|  | |||||||
| @ -6,7 +6,6 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException} from '@angular/core'; |  | ||||||
| 
 | 
 | ||||||
| import {CompileDiDependencyMetadata, CompileDirectiveMetadata, CompileIdentifierMap, CompileIdentifierMetadata, CompileProviderMetadata, CompileQueryMetadata, CompileTokenMetadata} from '../compile_metadata'; | import {CompileDiDependencyMetadata, CompileDirectiveMetadata, CompileIdentifierMap, CompileIdentifierMetadata, CompileProviderMetadata, CompileQueryMetadata, CompileTokenMetadata} from '../compile_metadata'; | ||||||
| import {ListWrapper, StringMapWrapper} from '../facade/collection'; | import {ListWrapper, StringMapWrapper} from '../facade/collection'; | ||||||
|  | |||||||
| @ -6,7 +6,6 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException} from '@angular/core'; |  | ||||||
| 
 | 
 | ||||||
| import {CompilePipeMetadata} from '../compile_metadata'; | import {CompilePipeMetadata} from '../compile_metadata'; | ||||||
| import {isBlank, isPresent} from '../facade/lang'; | import {isBlank, isPresent} from '../facade/lang'; | ||||||
| @ -86,7 +85,7 @@ function _findPipeMeta(view: CompileView, name: string): CompilePipeMetadata { | |||||||
|     } |     } | ||||||
|   } |   } | ||||||
|   if (isBlank(pipeMeta)) { |   if (isBlank(pipeMeta)) { | ||||||
|     throw new BaseException( |     throw new Error( | ||||||
|         `Illegal state: Could not find pipe ${name} although the parser should have detected this error!`); |         `Illegal state: Could not find pipe ${name} although the parser should have detected this error!`); | ||||||
|   } |   } | ||||||
|   return pipeMeta; |   return pipeMeta; | ||||||
|  | |||||||
| @ -6,7 +6,6 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException} from '@angular/core'; |  | ||||||
| 
 | 
 | ||||||
| import * as cdAst from '../expression_parser/ast'; | import * as cdAst from '../expression_parser/ast'; | ||||||
| import {isArray, isBlank, isPresent} from '../facade/lang'; | import {isArray, isBlank, isPresent} from '../facade/lang'; | ||||||
| @ -67,13 +66,13 @@ enum _Mode { | |||||||
| 
 | 
 | ||||||
| function ensureStatementMode(mode: _Mode, ast: cdAst.AST) { | function ensureStatementMode(mode: _Mode, ast: cdAst.AST) { | ||||||
|   if (mode !== _Mode.Statement) { |   if (mode !== _Mode.Statement) { | ||||||
|     throw new BaseException(`Expected a statement, but saw ${ast}`); |     throw new Error(`Expected a statement, but saw ${ast}`); | ||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| function ensureExpressionMode(mode: _Mode, ast: cdAst.AST) { | function ensureExpressionMode(mode: _Mode, ast: cdAst.AST) { | ||||||
|   if (mode !== _Mode.Expression) { |   if (mode !== _Mode.Expression) { | ||||||
|     throw new BaseException(`Expected an expression, but saw ${ast}`); |     throw new Error(`Expected an expression, but saw ${ast}`); | ||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -145,7 +144,7 @@ class _AstToIrVisitor implements cdAst.AstVisitor { | |||||||
|         op = o.BinaryOperator.BiggerEquals; |         op = o.BinaryOperator.BiggerEquals; | ||||||
|         break; |         break; | ||||||
|       default: |       default: | ||||||
|         throw new BaseException(`Unsupported operation ${ast.operation}`); |         throw new Error(`Unsupported operation ${ast.operation}`); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     return convertToStatementIfNeeded( |     return convertToStatementIfNeeded( | ||||||
| @ -273,7 +272,7 @@ class _AstToIrVisitor implements cdAst.AstVisitor { | |||||||
|     if (receiver === this._implicitReceiver) { |     if (receiver === this._implicitReceiver) { | ||||||
|       var varExpr = this._nameResolver.getLocal(ast.name); |       var varExpr = this._nameResolver.getLocal(ast.name); | ||||||
|       if (isPresent(varExpr)) { |       if (isPresent(varExpr)) { | ||||||
|         throw new BaseException('Cannot assign to a reference or variable!'); |         throw new Error('Cannot assign to a reference or variable!'); | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|     return convertToStatementIfNeeded( |     return convertToStatementIfNeeded( | ||||||
| @ -291,7 +290,7 @@ class _AstToIrVisitor implements cdAst.AstVisitor { | |||||||
|   visitAll(asts: cdAst.AST[], mode: _Mode): any { return asts.map(ast => this.visit(ast, mode)); } |   visitAll(asts: cdAst.AST[], mode: _Mode): any { return asts.map(ast => this.visit(ast, mode)); } | ||||||
| 
 | 
 | ||||||
|   visitQuote(ast: cdAst.Quote, mode: _Mode): any { |   visitQuote(ast: cdAst.Quote, mode: _Mode): any { | ||||||
|     throw new BaseException('Quotes are not supported for evaluation!'); |     throw new Error('Quotes are not supported for evaluation!'); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   private visit(ast: cdAst.AST, mode: _Mode): any { |   private visit(ast: cdAst.AST, mode: _Mode): any { | ||||||
| @ -466,7 +465,7 @@ class _AstToIrVisitor implements cdAst.AstVisitor { | |||||||
|   private releaseTemporary(temporary: o.ReadVarExpr) { |   private releaseTemporary(temporary: o.ReadVarExpr) { | ||||||
|     this._currentTemporary--; |     this._currentTemporary--; | ||||||
|     if (temporary.name != temporaryName(this.bindingIndex, this._currentTemporary)) { |     if (temporary.name != temporaryName(this.bindingIndex, this._currentTemporary)) { | ||||||
|       throw new BaseException(`Temporary ${temporary.name} released out of order`); |       throw new Error(`Temporary ${temporary.name} released out of order`); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | |||||||
| @ -6,7 +6,6 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException} from '@angular/core'; |  | ||||||
| 
 | 
 | ||||||
| import {CompileDirectiveMetadata, CompileTokenMetadata} from '../compile_metadata'; | import {CompileDirectiveMetadata, CompileTokenMetadata} from '../compile_metadata'; | ||||||
| import {isBlank, isPresent} from '../facade/lang'; | import {isBlank, isPresent} from '../facade/lang'; | ||||||
| @ -28,7 +27,7 @@ export function getPropertyInView( | |||||||
|       viewProp = viewProp.prop('parent'); |       viewProp = viewProp.prop('parent'); | ||||||
|     } |     } | ||||||
|     if (currView !== definedView) { |     if (currView !== definedView) { | ||||||
|       throw new BaseException( |       throw new Error( | ||||||
|           `Internal error: Could not calculate a property in a parent view: ${property}`); |           `Internal error: Could not calculate a property in a parent view: ${property}`); | ||||||
|     } |     } | ||||||
|     if (property instanceof o.ReadPropExpr) { |     if (property instanceof o.ReadPropExpr) { | ||||||
| @ -86,7 +85,7 @@ export function createPureProxy( | |||||||
|   var pureProxyId = |   var pureProxyId = | ||||||
|       argCount < Identifiers.pureProxies.length ? Identifiers.pureProxies[argCount] : null; |       argCount < Identifiers.pureProxies.length ? Identifiers.pureProxies[argCount] : null; | ||||||
|   if (isBlank(pureProxyId)) { |   if (isBlank(pureProxyId)) { | ||||||
|     throw new BaseException(`Unsupported number of argument for pure functions: ${argCount}`); |     throw new Error(`Unsupported number of argument for pure functions: ${argCount}`); | ||||||
|   } |   } | ||||||
|   view.createMethod.addStmt( |   view.createMethod.addStmt( | ||||||
|       o.THIS_EXPR.prop(pureProxyProp.name).set(o.importExpr(pureProxyId).callFn([fn])).toStmt()); |       o.THIS_EXPR.prop(pureProxyProp.name).set(o.importExpr(pureProxyId).callFn([fn])).toStmt()); | ||||||
|  | |||||||
| @ -6,7 +6,6 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException} from '@angular/core'; |  | ||||||
| 
 | 
 | ||||||
| import {afterEach, beforeEach, ddescribe, describe, expect, iit, it, xit} from '../../../core/testing/testing_internal'; | import {afterEach, beforeEach, ddescribe, describe, expect, iit, it, xit} from '../../../core/testing/testing_internal'; | ||||||
| import {CssBlockAst, CssBlockDefinitionRuleAst, CssBlockRuleAst, CssDefinitionAst, CssInlineRuleAst, CssKeyframeDefinitionAst, CssKeyframeRuleAst, CssMediaQueryRuleAst, CssSelectorRuleAst, CssStyleSheetAst, CssStyleValueAst} from '../../src/css_parser/css_ast'; | import {CssBlockAst, CssBlockDefinitionRuleAst, CssBlockRuleAst, CssDefinitionAst, CssInlineRuleAst, CssKeyframeDefinitionAst, CssKeyframeRuleAst, CssMediaQueryRuleAst, CssSelectorRuleAst, CssStyleSheetAst, CssStyleValueAst} from '../../src/css_parser/css_ast'; | ||||||
| @ -29,7 +28,7 @@ export function main() { | |||||||
|       var output = parse(css); |       var output = parse(css); | ||||||
|       var errors = output.errors; |       var errors = output.errors; | ||||||
|       if (errors.length > 0) { |       if (errors.length > 0) { | ||||||
|         throw new BaseException(errors.map((error: CssParseError) => error.msg).join(', ')); |         throw new Error(errors.map((error: CssParseError) => error.msg).join(', ')); | ||||||
|       } |       } | ||||||
|       return output.ast; |       return output.ast; | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -6,7 +6,6 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException} from '@angular/core'; |  | ||||||
| 
 | 
 | ||||||
| import {afterEach, beforeEach, ddescribe, describe, expect, iit, it, xit} from '../../../core/testing/testing_internal'; | import {afterEach, beforeEach, ddescribe, describe, expect, iit, it, xit} from '../../../core/testing/testing_internal'; | ||||||
| import {CssAst, CssAstVisitor, CssAtRulePredicateAst, CssBlockAst, CssBlockDefinitionRuleAst, CssBlockRuleAst, CssDefinitionAst, CssInlineRuleAst, CssKeyframeDefinitionAst, CssKeyframeRuleAst, CssMediaQueryRuleAst, CssPseudoSelectorAst, CssRuleAst, CssSelectorAst, CssSelectorRuleAst, CssSimpleSelectorAst, CssStyleSheetAst, CssStyleValueAst, CssStylesBlockAst, CssUnknownRuleAst, CssUnknownTokenListAst} from '../../src/css_parser/css_ast'; | import {CssAst, CssAstVisitor, CssAtRulePredicateAst, CssBlockAst, CssBlockDefinitionRuleAst, CssBlockRuleAst, CssDefinitionAst, CssInlineRuleAst, CssKeyframeDefinitionAst, CssKeyframeRuleAst, CssMediaQueryRuleAst, CssPseudoSelectorAst, CssRuleAst, CssSelectorAst, CssSelectorRuleAst, CssSimpleSelectorAst, CssStyleSheetAst, CssStyleValueAst, CssStylesBlockAst, CssUnknownRuleAst, CssUnknownTokenListAst} from '../../src/css_parser/css_ast'; | ||||||
| @ -122,7 +121,7 @@ export function main() { | |||||||
|     var output = new CssParser().parse(cssCode, 'some-fake-css-file.css'); |     var output = new CssParser().parse(cssCode, 'some-fake-css-file.css'); | ||||||
|     var errors = output.errors; |     var errors = output.errors; | ||||||
|     if (errors.length > 0 && !ignoreErrors) { |     if (errors.length > 0 && !ignoreErrors) { | ||||||
|       throw new BaseException(errors.map((error: CssParseError) => error.msg).join(', ')); |       throw new Error(errors.map((error: CssParseError) => error.msg).join(', ')); | ||||||
|     } |     } | ||||||
|     return output.ast; |     return output.ast; | ||||||
|   } |   } | ||||||
|  | |||||||
| @ -6,7 +6,6 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException} from '@angular/core'; |  | ||||||
| import * as html from '../../src/ml_parser/ast'; | import * as html from '../../src/ml_parser/ast'; | ||||||
| import {ParseTreeResult} from '../../src/ml_parser/html_parser'; | import {ParseTreeResult} from '../../src/ml_parser/html_parser'; | ||||||
| import {ParseLocation} from '../../src/parse_util'; | import {ParseLocation} from '../../src/parse_util'; | ||||||
| @ -14,7 +13,7 @@ import {ParseLocation} from '../../src/parse_util'; | |||||||
| export function humanizeDom(parseResult: ParseTreeResult, addSourceSpan: boolean = false): any[] { | export function humanizeDom(parseResult: ParseTreeResult, addSourceSpan: boolean = false): any[] { | ||||||
|   if (parseResult.errors.length > 0) { |   if (parseResult.errors.length > 0) { | ||||||
|     var errorString = parseResult.errors.join('\n'); |     var errorString = parseResult.errors.join('\n'); | ||||||
|     throw new BaseException(`Unexpected parse errors:\n${errorString}`); |     throw new Error(`Unexpected parse errors:\n${errorString}`); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   return humanizeNodes(parseResult.rootNodes, addSourceSpan); |   return humanizeNodes(parseResult.rootNodes, addSourceSpan); | ||||||
|  | |||||||
| @ -9,13 +9,12 @@ | |||||||
| // ATTENTION: This file will be overwritten with generated code by main()
 | // ATTENTION: This file will be overwritten with generated code by main()
 | ||||||
| import * as o from '@angular/compiler/src/output/output_ast'; | import * as o from '@angular/compiler/src/output/output_ast'; | ||||||
| import {TypeScriptEmitter} from '@angular/compiler/src/output/ts_emitter'; | import {TypeScriptEmitter} from '@angular/compiler/src/output/ts_emitter'; | ||||||
| import {BaseException} from '@angular/core'; |  | ||||||
| 
 | 
 | ||||||
| import {print} from '../../src/facade/lang'; | import {print} from '../../src/facade/lang'; | ||||||
| import {assetUrl} from '../../src/util'; | import {assetUrl} from '../../src/util'; | ||||||
| 
 | 
 | ||||||
| function unimplemented(): any { | function unimplemented(): any { | ||||||
|   throw new BaseException('unimplemented'); |   throw new Error('unimplemented'); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| import {SimpleJsImportGenerator, codegenExportsVars, codegenStmts} from './output_emitter_util'; | import {SimpleJsImportGenerator, codegenExportsVars, codegenStmts} from './output_emitter_util'; | ||||||
|  | |||||||
| @ -8,7 +8,6 @@ | |||||||
| 
 | 
 | ||||||
| // ATTENTION: This file will be overwritten with generated code by main()
 | // ATTENTION: This file will be overwritten with generated code by main()
 | ||||||
| import {JavaScriptEmitter} from '@angular/compiler/src/output/js_emitter'; | import {JavaScriptEmitter} from '@angular/compiler/src/output/js_emitter'; | ||||||
| import {BaseException} from '@angular/core'; |  | ||||||
| 
 | 
 | ||||||
| import {print} from '../../src/facade/lang'; | import {print} from '../../src/facade/lang'; | ||||||
| import {assetUrl} from '../../src/util'; | import {assetUrl} from '../../src/util'; | ||||||
| @ -16,7 +15,7 @@ import {assetUrl} from '../../src/util'; | |||||||
| import {SimpleJsImportGenerator, codegenExportsVars, codegenStmts} from './output_emitter_util'; | import {SimpleJsImportGenerator, codegenExportsVars, codegenStmts} from './output_emitter_util'; | ||||||
| 
 | 
 | ||||||
| export function getExpressions(): any { | export function getExpressions(): any { | ||||||
|   throw new BaseException('unimplemented'); |   throw new Error('unimplemented'); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // Generator
 | // Generator
 | ||||||
|  | |||||||
| @ -8,7 +8,7 @@ | |||||||
| 
 | 
 | ||||||
| import {interpretStatements} from '@angular/compiler/src/output/output_interpreter'; | import {interpretStatements} from '@angular/compiler/src/output/output_interpreter'; | ||||||
| import {jitStatements} from '@angular/compiler/src/output/output_jit'; | import {jitStatements} from '@angular/compiler/src/output/output_jit'; | ||||||
| import {BaseException, EventEmitter} from '@angular/core'; | import {EventEmitter} from '@angular/core'; | ||||||
| import {ViewType} from '@angular/core/src/linker/view_type'; | import {ViewType} from '@angular/core/src/linker/view_type'; | ||||||
| import {beforeEach, ddescribe, describe, iit, inject, it, xit} from '@angular/core/testing/testing_internal'; | import {beforeEach, ddescribe, describe, iit, inject, it, xit} from '@angular/core/testing/testing_internal'; | ||||||
| import {getDOM} from '@angular/platform-browser/src/dom/dom_adapter'; | import {getDOM} from '@angular/platform-browser/src/dom/dom_adapter'; | ||||||
| @ -179,7 +179,7 @@ export function main() { | |||||||
|            () => { expect(expressions['throwError']).toThrowError('someError'); }); |            () => { expect(expressions['throwError']).toThrowError('someError'); }); | ||||||
| 
 | 
 | ||||||
|         it('should support catching errors', () => { |         it('should support catching errors', () => { | ||||||
|           function someOperation() { throw new BaseException('Boom!'); } |           function someOperation() { throw new Error('Boom!'); } | ||||||
| 
 | 
 | ||||||
|           var errorAndStack = expressions['catchError'](someOperation); |           var errorAndStack = expressions['catchError'](someOperation); | ||||||
|           expect(errorAndStack[0].message).toEqual('Boom!'); |           expect(errorAndStack[0].message).toEqual('Boom!'); | ||||||
|  | |||||||
| @ -10,7 +10,8 @@ import {CompileIdentifierMetadata} from '@angular/compiler/src/compile_metadata' | |||||||
| import * as o from '@angular/compiler/src/output/output_ast'; | import * as o from '@angular/compiler/src/output/output_ast'; | ||||||
| import {ImportGenerator} from '@angular/compiler/src/output/path_util'; | import {ImportGenerator} from '@angular/compiler/src/output/path_util'; | ||||||
| import {assetUrl} from '@angular/compiler/src/util'; | import {assetUrl} from '@angular/compiler/src/util'; | ||||||
| import {BaseException, EventEmitter} from '@angular/core'; | import {EventEmitter} from '@angular/core'; | ||||||
|  | import {BaseError} from '@angular/core/src/facade/errors'; | ||||||
| import {ViewType} from '@angular/core/src/linker/view_type'; | import {ViewType} from '@angular/core/src/linker/view_type'; | ||||||
| 
 | 
 | ||||||
| export class ExternalClass { | export class ExternalClass { | ||||||
| @ -34,8 +35,8 @@ var enumIdentifier = new CompileIdentifierMetadata({ | |||||||
|   runtime: ViewType.HOST |   runtime: ViewType.HOST | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| var baseExceptionIdentifier = new CompileIdentifierMetadata( | var baseErrorIdentifier = new CompileIdentifierMetadata( | ||||||
|     {name: 'BaseException', moduleUrl: assetUrl('core'), runtime: BaseException}); |     {name: 'BaseError', moduleUrl: assetUrl('core', 'facade/errors'), runtime: BaseError}); | ||||||
| 
 | 
 | ||||||
| export var codegenExportsVars = [ | export var codegenExportsVars = [ | ||||||
|   'getExpressions', |   'getExpressions', | ||||||
| @ -68,8 +69,8 @@ var _getExpressionsStmts: o.Statement[] = [ | |||||||
|       .toDeclStmt(), |       .toDeclStmt(), | ||||||
| 
 | 
 | ||||||
|   o.variable('throwError') |   o.variable('throwError') | ||||||
|       .set(o.fn([], [new o.ThrowStmt(o.importExpr(baseExceptionIdentifier).instantiate([o.literal( |       .set(o.fn([], [new o.ThrowStmt( | ||||||
|                         'someError')]))])) |                         o.importExpr(baseErrorIdentifier).instantiate([o.literal('someError')]))])) | ||||||
|       .toDeclStmt(), |       .toDeclStmt(), | ||||||
| 
 | 
 | ||||||
|   o.variable('catchError') |   o.variable('catchError') | ||||||
|  | |||||||
| @ -7,7 +7,6 @@ | |||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {MetadataOverride} from '@angular/core/testing'; | import {MetadataOverride} from '@angular/core/testing'; | ||||||
| import {BaseException} from '../src/facade/exceptions'; |  | ||||||
| import {stringify} from '../src/facade/lang'; | import {stringify} from '../src/facade/lang'; | ||||||
| 
 | 
 | ||||||
| type StringMap = { | type StringMap = { | ||||||
| @ -31,8 +30,7 @@ export class MetadataOverrider { | |||||||
| 
 | 
 | ||||||
|     if (override.set) { |     if (override.set) { | ||||||
|       if (override.remove || override.add) { |       if (override.remove || override.add) { | ||||||
|         throw new BaseException( |         throw new Error(`Cannot set and add/remove ${stringify(metadataClass)} at the same time!`); | ||||||
|             `Cannot set and add/remove ${stringify(metadataClass)} at the same time!`); |  | ||||||
|       } |       } | ||||||
|       setMetadata(props, override.set); |       setMetadata(props, override.set); | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -6,7 +6,6 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException} from '@angular/core'; |  | ||||||
| 
 | 
 | ||||||
| import {ResourceLoader} from '../index'; | import {ResourceLoader} from '../index'; | ||||||
| import {ListWrapper, Map} from '../src/facade/collection'; | import {ListWrapper, Map} from '../src/facade/collection'; | ||||||
| @ -54,7 +53,7 @@ export class MockResourceLoader extends ResourceLoader { | |||||||
|    */ |    */ | ||||||
|   flush() { |   flush() { | ||||||
|     if (this._requests.length === 0) { |     if (this._requests.length === 0) { | ||||||
|       throw new BaseException('No pending requests to flush'); |       throw new Error('No pending requests to flush'); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     do { |     do { | ||||||
| @ -76,7 +75,7 @@ export class MockResourceLoader extends ResourceLoader { | |||||||
|       urls.push(expectation.url); |       urls.push(expectation.url); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     throw new BaseException(`Unsatisfied requests: ${urls.join(', ')}`); |     throw new Error(`Unsatisfied requests: ${urls.join(', ')}`); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   private _processRequest(request: _PendingRequest) { |   private _processRequest(request: _PendingRequest) { | ||||||
| @ -97,7 +96,7 @@ export class MockResourceLoader extends ResourceLoader { | |||||||
|       return; |       return; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     throw new BaseException(`Unexpected request ${url}`); |     throw new Error(`Unexpected request ${url}`); | ||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -30,7 +30,7 @@ export {wtfCreateScope, wtfLeave, wtfStartTimeRange, wtfEndTimeRange, WtfScopeFn | |||||||
| 
 | 
 | ||||||
| export {Type} from './src/type'; | export {Type} from './src/type'; | ||||||
| export {EventEmitter} from './src/facade/async'; | export {EventEmitter} from './src/facade/async'; | ||||||
| export {ExceptionHandler, WrappedException, BaseException} from './src/facade/exceptions'; | export {ErrorHandler} from './src/error_handler'; | ||||||
| export * from './private_export'; | export * from './private_export'; | ||||||
| 
 | 
 | ||||||
| export * from './src/animation/metadata'; | export * from './src/animation/metadata'; | ||||||
|  | |||||||
| @ -20,6 +20,7 @@ import * as console from './src/console'; | |||||||
| import * as debug from './src/debug/debug_renderer'; | import * as debug from './src/debug/debug_renderer'; | ||||||
| import * as provider from './src/di/provider'; | import * as provider from './src/di/provider'; | ||||||
| import * as reflective_provider from './src/di/reflective_provider'; | import * as reflective_provider from './src/di/reflective_provider'; | ||||||
|  | import {ComponentStillLoadingError} from './src/linker/compiler'; | ||||||
| import * as component_factory_resolver from './src/linker/component_factory_resolver'; | import * as component_factory_resolver from './src/linker/component_factory_resolver'; | ||||||
| import * as debug_context from './src/linker/debug_context'; | import * as debug_context from './src/linker/debug_context'; | ||||||
| import * as element from './src/linker/element'; | import * as element from './src/linker/element'; | ||||||
| @ -40,6 +41,7 @@ import * as api from './src/render/api'; | |||||||
| import * as security from './src/security'; | import * as security from './src/security'; | ||||||
| import * as decorators from './src/util/decorators'; | import * as decorators from './src/util/decorators'; | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| // These generic types can't be exported within the __core_private_types__
 | // These generic types can't be exported within the __core_private_types__
 | ||||||
| // interface because the generic type info will be lost. So just exporting
 | // interface because the generic type info will be lost. So just exporting
 | ||||||
| // them separately.
 | // them separately.
 | ||||||
| @ -110,6 +112,7 @@ export interface __core_private_types__ { | |||||||
|   DEFAULT_STATE: typeof DEFAULT_STATE_; |   DEFAULT_STATE: typeof DEFAULT_STATE_; | ||||||
|   EMPTY_STATE: typeof EMPTY_STATE_; |   EMPTY_STATE: typeof EMPTY_STATE_; | ||||||
|   FILL_STYLE_FLAG: typeof FILL_STYLE_FLAG_; |   FILL_STYLE_FLAG: typeof FILL_STYLE_FLAG_; | ||||||
|  |   ComponentStillLoadingError: typeof ComponentStillLoadingError; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export var __core_private__ = { | export var __core_private__ = { | ||||||
| @ -176,5 +179,6 @@ export var __core_private__ = { | |||||||
|   ANY_STATE: ANY_STATE_, |   ANY_STATE: ANY_STATE_, | ||||||
|   DEFAULT_STATE: DEFAULT_STATE_, |   DEFAULT_STATE: DEFAULT_STATE_, | ||||||
|   EMPTY_STATE: EMPTY_STATE_, |   EMPTY_STATE: EMPTY_STATE_, | ||||||
|   FILL_STYLE_FLAG: FILL_STYLE_FLAG_ |   FILL_STYLE_FLAG: FILL_STYLE_FLAG_, | ||||||
|  |   ComponentStillLoadingError: ComponentStillLoadingError | ||||||
| }; | }; | ||||||
|  | |||||||
| @ -6,7 +6,6 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException} from '../facade/exceptions'; |  | ||||||
| import {scheduleMicroTask} from '../facade/lang'; | import {scheduleMicroTask} from '../facade/lang'; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -26,10 +25,8 @@ export abstract class AnimationPlayer { | |||||||
|   abstract reset(): void; |   abstract reset(): void; | ||||||
|   abstract setPosition(p: any /** TODO #9100 */): void; |   abstract setPosition(p: any /** TODO #9100 */): void; | ||||||
|   abstract getPosition(): number; |   abstract getPosition(): number; | ||||||
|   get parentPlayer(): AnimationPlayer { throw new BaseException('NOT IMPLEMENTED: Base Class'); } |   get parentPlayer(): AnimationPlayer { throw new Error('NOT IMPLEMENTED: Base Class'); } | ||||||
|   set parentPlayer(player: AnimationPlayer) { |   set parentPlayer(player: AnimationPlayer) { throw new Error('NOT IMPLEMENTED: Base Class'); } | ||||||
|     throw new BaseException('NOT IMPLEMENTED: Base Class'); |  | ||||||
|   } |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export class NoOpAnimationPlayer implements AnimationPlayer { | export class NoOpAnimationPlayer implements AnimationPlayer { | ||||||
|  | |||||||
| @ -6,7 +6,6 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException} from '../facade/exceptions'; |  | ||||||
| import {NumberWrapper, isArray, isPresent, isString} from '../facade/lang'; | import {NumberWrapper, isArray, isPresent, isString} from '../facade/lang'; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
| @ -102,7 +101,7 @@ export class AnimationAnimateMetadata extends AnimationMetadata { | |||||||
|  */ |  */ | ||||||
| export abstract class AnimationWithStepsMetadata extends AnimationMetadata { | export abstract class AnimationWithStepsMetadata extends AnimationMetadata { | ||||||
|   constructor() { super(); } |   constructor() { super(); } | ||||||
|   get steps(): AnimationMetadata[] { throw new BaseException('NOT IMPLEMENTED: Base Class'); } |   get steps(): AnimationMetadata[] { throw new Error('NOT IMPLEMENTED: Base Class'); } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  | |||||||
| @ -6,8 +6,9 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
|  | import {ErrorHandler} from '../src/error_handler'; | ||||||
| import {ListWrapper} from '../src/facade/collection'; | import {ListWrapper} from '../src/facade/collection'; | ||||||
| import {BaseException, ExceptionHandler, unimplemented} from '../src/facade/exceptions'; | import {unimplemented} from '../src/facade/errors'; | ||||||
| import {isBlank, isPresent, isPromise, stringify} from '../src/facade/lang'; | import {isBlank, isPresent, isPromise, stringify} from '../src/facade/lang'; | ||||||
| 
 | 
 | ||||||
| import {ApplicationInitStatus} from './application_init'; | import {ApplicationInitStatus} from './application_init'; | ||||||
| @ -40,8 +41,7 @@ var _platform: PlatformRef; | |||||||
|  */ |  */ | ||||||
| export function enableProdMode(): void { | export function enableProdMode(): void { | ||||||
|   if (_runModeLocked) { |   if (_runModeLocked) { | ||||||
|     // Cannot use BaseException as that ends up importing from facade/lang.
 |     throw new Error('Cannot enable prod mode after platform setup.'); | ||||||
|     throw new BaseException('Cannot enable prod mode after platform setup.'); |  | ||||||
|   } |   } | ||||||
|   _devMode = false; |   _devMode = false; | ||||||
| } | } | ||||||
| @ -67,7 +67,7 @@ export function isDevMode(): boolean { | |||||||
|  */ |  */ | ||||||
| export function createPlatform(injector: Injector): PlatformRef { | export function createPlatform(injector: Injector): PlatformRef { | ||||||
|   if (isPresent(_platform) && !_platform.destroyed) { |   if (isPresent(_platform) && !_platform.destroyed) { | ||||||
|     throw new BaseException( |     throw new Error( | ||||||
|         'There can be only one platform. Destroy the previous one to create a new one.'); |         'There can be only one platform. Destroy the previous one to create a new one.'); | ||||||
|   } |   } | ||||||
|   _platform = injector.get(PlatformRef); |   _platform = injector.get(PlatformRef); | ||||||
| @ -115,10 +115,10 @@ export function createPlatformFactory( | |||||||
| export function assertPlatform(requiredToken: any): PlatformRef { | export function assertPlatform(requiredToken: any): PlatformRef { | ||||||
|   var platform = getPlatform(); |   var platform = getPlatform(); | ||||||
|   if (isBlank(platform)) { |   if (isBlank(platform)) { | ||||||
|     throw new BaseException('No platform exists!'); |     throw new Error('No platform exists!'); | ||||||
|   } |   } | ||||||
|   if (isPresent(platform) && isBlank(platform.injector.get(requiredToken, null))) { |   if (isPresent(platform) && isBlank(platform.injector.get(requiredToken, null))) { | ||||||
|     throw new BaseException( |     throw new Error( | ||||||
|         'A platform with a different configuration has been created. Please destroy it first.'); |         'A platform with a different configuration has been created. Please destroy it first.'); | ||||||
|   } |   } | ||||||
|   return platform; |   return platform; | ||||||
| @ -221,13 +221,12 @@ export abstract class PlatformRef { | |||||||
|   get destroyed(): boolean { throw unimplemented(); } |   get destroyed(): boolean { throw unimplemented(); } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| function _callAndReportToExceptionHandler( | function _callAndReportToExceptionHandler(errorHandler: ErrorHandler, callback: () => any): any { | ||||||
|     exceptionHandler: ExceptionHandler, callback: () => any): any { |  | ||||||
|   try { |   try { | ||||||
|     const result = callback(); |     const result = callback(); | ||||||
|     if (isPromise(result)) { |     if (isPromise(result)) { | ||||||
|       return result.catch((e: any) => { |       return result.catch((e: any) => { | ||||||
|         exceptionHandler.call(e); |         errorHandler.handleError(e); | ||||||
|         // rethrow as the exception handler might not do it
 |         // rethrow as the exception handler might not do it
 | ||||||
|         throw e; |         throw e; | ||||||
|       }); |       }); | ||||||
| @ -235,7 +234,7 @@ function _callAndReportToExceptionHandler( | |||||||
|       return result; |       return result; | ||||||
|     } |     } | ||||||
|   } catch (e) { |   } catch (e) { | ||||||
|     exceptionHandler.call(e); |     errorHandler.handleError(e); | ||||||
|     // rethrow as the exception handler might not do it
 |     // rethrow as the exception handler might not do it
 | ||||||
|     throw e; |     throw e; | ||||||
|   } |   } | ||||||
| @ -258,7 +257,7 @@ export class PlatformRef_ extends PlatformRef { | |||||||
| 
 | 
 | ||||||
|   destroy() { |   destroy() { | ||||||
|     if (this._destroyed) { |     if (this._destroyed) { | ||||||
|       throw new BaseException('The platform has already been destroyed!'); |       throw new Error('The platform has already been destroyed!'); | ||||||
|     } |     } | ||||||
|     ListWrapper.clone(this._modules).forEach((app) => app.destroy()); |     ListWrapper.clone(this._modules).forEach((app) => app.destroy()); | ||||||
|     this._destroyListeners.forEach((dispose) => dispose()); |     this._destroyListeners.forEach((dispose) => dispose()); | ||||||
| @ -282,13 +281,12 @@ export class PlatformRef_ extends PlatformRef { | |||||||
|       const ngZoneInjector = |       const ngZoneInjector = | ||||||
|           ReflectiveInjector.resolveAndCreate([{provide: NgZone, useValue: ngZone}], this.injector); |           ReflectiveInjector.resolveAndCreate([{provide: NgZone, useValue: ngZone}], this.injector); | ||||||
|       const moduleRef = <NgModuleInjector<M>>moduleFactory.create(ngZoneInjector); |       const moduleRef = <NgModuleInjector<M>>moduleFactory.create(ngZoneInjector); | ||||||
|       const exceptionHandler: ExceptionHandler = moduleRef.injector.get(ExceptionHandler, null); |       const exceptionHandler: ErrorHandler = moduleRef.injector.get(ErrorHandler, null); | ||||||
|       if (!exceptionHandler) { |       if (!exceptionHandler) { | ||||||
|         throw new Error('No ExceptionHandler. Is platform module (BrowserModule) included?'); |         throw new Error('No ExceptionHandler. Is platform module (BrowserModule) included?'); | ||||||
|       } |       } | ||||||
|       moduleRef.onDestroy(() => ListWrapper.remove(this._modules, moduleRef)); |       moduleRef.onDestroy(() => ListWrapper.remove(this._modules, moduleRef)); | ||||||
|       ngZone.onError.subscribe( |       ngZone.onError.subscribe({next: (error: any) => { exceptionHandler.handleError(error); }}); | ||||||
|           {next: (error: any) => { exceptionHandler.call(error, error ? error.stack : null); }}); |  | ||||||
|       return _callAndReportToExceptionHandler(exceptionHandler, () => { |       return _callAndReportToExceptionHandler(exceptionHandler, () => { | ||||||
|         const initStatus: ApplicationInitStatus = moduleRef.injector.get(ApplicationInitStatus); |         const initStatus: ApplicationInitStatus = moduleRef.injector.get(ApplicationInitStatus); | ||||||
|         return initStatus.donePromise.then(() => { |         return initStatus.donePromise.then(() => { | ||||||
| @ -333,7 +331,7 @@ export class PlatformRef_ extends PlatformRef { | |||||||
|     } else if (moduleRef.instance.ngDoBootstrap) { |     } else if (moduleRef.instance.ngDoBootstrap) { | ||||||
|       moduleRef.instance.ngDoBootstrap(appRef); |       moduleRef.instance.ngDoBootstrap(appRef); | ||||||
|     } else { |     } else { | ||||||
|       throw new BaseException( |       throw new Error( | ||||||
|           `The module ${stringify(moduleRef.instance.constructor)} was bootstrapped, but it does not declare "@NgModule.bootstrap" components nor a "ngDoBootstrap" method. ` + |           `The module ${stringify(moduleRef.instance.constructor)} was bootstrapped, but it does not declare "@NgModule.bootstrap" components nor a "ngDoBootstrap" method. ` + | ||||||
|           `Please define one of these.`); |           `Please define one of these.`); | ||||||
|     } |     } | ||||||
| @ -400,7 +398,7 @@ export class ApplicationRef_ extends ApplicationRef { | |||||||
| 
 | 
 | ||||||
|   constructor( |   constructor( | ||||||
|       private _zone: NgZone, private _console: Console, private _injector: Injector, |       private _zone: NgZone, private _console: Console, private _injector: Injector, | ||||||
|       private _exceptionHandler: ExceptionHandler, |       private _exceptionHandler: ErrorHandler, | ||||||
|       private _componentFactoryResolver: ComponentFactoryResolver, |       private _componentFactoryResolver: ComponentFactoryResolver, | ||||||
|       private _initStatus: ApplicationInitStatus, |       private _initStatus: ApplicationInitStatus, | ||||||
|       @Optional() private _testabilityRegistry: TestabilityRegistry, |       @Optional() private _testabilityRegistry: TestabilityRegistry, | ||||||
| @ -422,7 +420,7 @@ export class ApplicationRef_ extends ApplicationRef { | |||||||
| 
 | 
 | ||||||
|   bootstrap<C>(componentOrFactory: ComponentFactory<C>|Type<C>): ComponentRef<C> { |   bootstrap<C>(componentOrFactory: ComponentFactory<C>|Type<C>): ComponentRef<C> { | ||||||
|     if (!this._initStatus.done) { |     if (!this._initStatus.done) { | ||||||
|       throw new BaseException( |       throw new Error( | ||||||
|           'Cannot bootstrap as there are still asynchronous initializers running. Bootstrap components in the `ngDoBootstrap` method of the root module.'); |           'Cannot bootstrap as there are still asynchronous initializers running. Bootstrap components in the `ngDoBootstrap` method of the root module.'); | ||||||
|     } |     } | ||||||
|     let componentFactory: ComponentFactory<C>; |     let componentFactory: ComponentFactory<C>; | ||||||
| @ -471,7 +469,7 @@ export class ApplicationRef_ extends ApplicationRef { | |||||||
| 
 | 
 | ||||||
|   tick(): void { |   tick(): void { | ||||||
|     if (this._runningTick) { |     if (this._runningTick) { | ||||||
|       throw new BaseException('ApplicationRef.tick is called recursively'); |       throw new Error('ApplicationRef.tick is called recursively'); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     var s = ApplicationRef_._tickScope(); |     var s = ApplicationRef_._tickScope(); | ||||||
|  | |||||||
| @ -7,7 +7,6 @@ | |||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {isListLikeIterable, iterateListLike} from '../../facade/collection'; | import {isListLikeIterable, iterateListLike} from '../../facade/collection'; | ||||||
| import {BaseException} from '../../facade/exceptions'; |  | ||||||
| import {getMapKey, isArray, isBlank, isPresent, looseIdentical, stringify} from '../../facade/lang'; | import {getMapKey, isArray, isBlank, isPresent, looseIdentical, stringify} from '../../facade/lang'; | ||||||
| import {ChangeDetectorRef} from '../change_detector_ref'; | import {ChangeDetectorRef} from '../change_detector_ref'; | ||||||
| 
 | 
 | ||||||
| @ -150,7 +149,7 @@ export class DefaultIterableDiffer implements IterableDiffer { | |||||||
|   diff(collection: any): DefaultIterableDiffer { |   diff(collection: any): DefaultIterableDiffer { | ||||||
|     if (isBlank(collection)) collection = []; |     if (isBlank(collection)) collection = []; | ||||||
|     if (!isListLikeIterable(collection)) { |     if (!isListLikeIterable(collection)) { | ||||||
|       throw new BaseException(`Error trying to diff '${collection}'`); |       throw new Error(`Error trying to diff '${collection}'`); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     if (this.check(collection)) { |     if (this.check(collection)) { | ||||||
|  | |||||||
| @ -7,7 +7,6 @@ | |||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {StringMapWrapper} from '../../facade/collection'; | import {StringMapWrapper} from '../../facade/collection'; | ||||||
| import {BaseException} from '../../facade/exceptions'; |  | ||||||
| import {isJsObject, looseIdentical, stringify} from '../../facade/lang'; | import {isJsObject, looseIdentical, stringify} from '../../facade/lang'; | ||||||
| import {ChangeDetectorRef} from '../change_detector_ref'; | import {ChangeDetectorRef} from '../change_detector_ref'; | ||||||
| 
 | 
 | ||||||
| @ -76,7 +75,7 @@ export class DefaultKeyValueDiffer implements KeyValueDiffer { | |||||||
|     if (!map) { |     if (!map) { | ||||||
|       map = new Map(); |       map = new Map(); | ||||||
|     } else if (!(map instanceof Map || isJsObject(map))) { |     } else if (!(map instanceof Map || isJsObject(map))) { | ||||||
|       throw new BaseException(`Error trying to diff '${map}'`); |       throw new Error(`Error trying to diff '${map}'`); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     return this.check(map) ? this : null; |     return this.check(map) ? this : null; | ||||||
|  | |||||||
| @ -8,7 +8,6 @@ | |||||||
| 
 | 
 | ||||||
| import {OptionalMetadata, Provider, SkipSelfMetadata} from '../../di'; | import {OptionalMetadata, Provider, SkipSelfMetadata} from '../../di'; | ||||||
| import {ListWrapper} from '../../facade/collection'; | import {ListWrapper} from '../../facade/collection'; | ||||||
| import {BaseException} from '../../facade/exceptions'; |  | ||||||
| import {getTypeNameForDebugging, isBlank, isPresent} from '../../facade/lang'; | import {getTypeNameForDebugging, isBlank, isPresent} from '../../facade/lang'; | ||||||
| import {ChangeDetectorRef} from '../change_detector_ref'; | import {ChangeDetectorRef} from '../change_detector_ref'; | ||||||
| 
 | 
 | ||||||
| @ -87,7 +86,7 @@ export class IterableDiffers { | |||||||
|           // Typically would occur when calling IterableDiffers.extend inside of dependencies passed
 |           // Typically would occur when calling IterableDiffers.extend inside of dependencies passed
 | ||||||
|           // to
 |           // to
 | ||||||
|           // bootstrap(), which would override default pipes instead of extending them.
 |           // bootstrap(), which would override default pipes instead of extending them.
 | ||||||
|           throw new BaseException('Cannot extend IterableDiffers without a parent injector'); |           throw new Error('Cannot extend IterableDiffers without a parent injector'); | ||||||
|         } |         } | ||||||
|         return IterableDiffers.create(factories, parent); |         return IterableDiffers.create(factories, parent); | ||||||
|       }, |       }, | ||||||
| @ -101,7 +100,7 @@ export class IterableDiffers { | |||||||
|     if (isPresent(factory)) { |     if (isPresent(factory)) { | ||||||
|       return factory; |       return factory; | ||||||
|     } else { |     } else { | ||||||
|       throw new BaseException( |       throw new Error( | ||||||
|           `Cannot find a differ supporting object '${iterable}' of type '${getTypeNameForDebugging(iterable)}'`); |           `Cannot find a differ supporting object '${iterable}' of type '${getTypeNameForDebugging(iterable)}'`); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  | |||||||
| @ -8,7 +8,6 @@ | |||||||
| 
 | 
 | ||||||
| import {OptionalMetadata, Provider, SkipSelfMetadata} from '../../di'; | import {OptionalMetadata, Provider, SkipSelfMetadata} from '../../di'; | ||||||
| import {ListWrapper} from '../../facade/collection'; | import {ListWrapper} from '../../facade/collection'; | ||||||
| import {BaseException} from '../../facade/exceptions'; |  | ||||||
| import {isBlank, isPresent} from '../../facade/lang'; | import {isBlank, isPresent} from '../../facade/lang'; | ||||||
| import {ChangeDetectorRef} from '../change_detector_ref'; | import {ChangeDetectorRef} from '../change_detector_ref'; | ||||||
| 
 | 
 | ||||||
| @ -77,7 +76,7 @@ export class KeyValueDiffers { | |||||||
|           // Typically would occur when calling KeyValueDiffers.extend inside of dependencies passed
 |           // Typically would occur when calling KeyValueDiffers.extend inside of dependencies passed
 | ||||||
|           // to
 |           // to
 | ||||||
|           // bootstrap(), which would override default pipes instead of extending them.
 |           // bootstrap(), which would override default pipes instead of extending them.
 | ||||||
|           throw new BaseException('Cannot extend KeyValueDiffers without a parent injector'); |           throw new Error('Cannot extend KeyValueDiffers without a parent injector'); | ||||||
|         } |         } | ||||||
|         return KeyValueDiffers.create(factories, parent); |         return KeyValueDiffers.create(factories, parent); | ||||||
|       }, |       }, | ||||||
| @ -91,7 +90,7 @@ export class KeyValueDiffers { | |||||||
|     if (isPresent(factory)) { |     if (isPresent(factory)) { | ||||||
|       return factory; |       return factory; | ||||||
|     } else { |     } else { | ||||||
|       throw new BaseException(`Cannot find a differ supporting object '${kv}'`); |       throw new Error(`Cannot find a differ supporting object '${kv}'`); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | |||||||
| @ -25,5 +25,4 @@ export {ReflectiveInjector} from './di/reflective_injector'; | |||||||
| export {Provider, TypeProvider, ValueProvider, ClassProvider, ExistingProvider, FactoryProvider} from './di/provider'; | export {Provider, TypeProvider, ValueProvider, ClassProvider, ExistingProvider, FactoryProvider} from './di/provider'; | ||||||
| export {ResolvedReflectiveFactory, ResolvedReflectiveProvider} from './di/reflective_provider'; | export {ResolvedReflectiveFactory, ResolvedReflectiveProvider} from './di/reflective_provider'; | ||||||
| export {ReflectiveKey} from './di/reflective_key'; | export {ReflectiveKey} from './di/reflective_key'; | ||||||
| export {NoProviderError, AbstractProviderError, CyclicDependencyError, InstantiationError, InvalidProviderError, NoAnnotationError, OutOfBoundsError} from './di/reflective_exceptions'; |  | ||||||
| export {OpaqueToken} from './di/opaque_token'; | export {OpaqueToken} from './di/opaque_token'; | ||||||
|  | |||||||
| @ -6,7 +6,7 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException, unimplemented} from '../facade/exceptions'; | import {unimplemented} from '../facade/errors'; | ||||||
| import {stringify} from '../facade/lang'; | import {stringify} from '../facade/lang'; | ||||||
| 
 | 
 | ||||||
| const _THROW_IF_NOT_FOUND = new Object(); | const _THROW_IF_NOT_FOUND = new Object(); | ||||||
| @ -15,7 +15,7 @@ export const THROW_IF_NOT_FOUND = _THROW_IF_NOT_FOUND; | |||||||
| class _NullInjector implements Injector { | class _NullInjector implements Injector { | ||||||
|   get(token: any, notFoundValue: any = _THROW_IF_NOT_FOUND): any { |   get(token: any, notFoundValue: any = _THROW_IF_NOT_FOUND): any { | ||||||
|     if (notFoundValue === _THROW_IF_NOT_FOUND) { |     if (notFoundValue === _THROW_IF_NOT_FOUND) { | ||||||
|       throw new BaseException(`No provider for ${stringify(token)}!`); |       throw new Error(`No provider for ${stringify(token)}!`); | ||||||
|     } |     } | ||||||
|     return notFoundValue; |     return notFoundValue; | ||||||
|   } |   } | ||||||
|  | |||||||
| @ -7,9 +7,10 @@ | |||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {ListWrapper} from '../facade/collection'; | import {ListWrapper} from '../facade/collection'; | ||||||
| import {BaseException, WrappedException} from '../facade/exceptions'; | import {BaseError, WrappedError} from '../facade/errors'; | ||||||
| import {isBlank, stringify} from '../facade/lang'; | import {isBlank, stringify} from '../facade/lang'; | ||||||
| import {Type} from '../type'; | import {Type} from '../type'; | ||||||
|  | 
 | ||||||
| import {ReflectiveInjector} from './reflective_injector'; | import {ReflectiveInjector} from './reflective_injector'; | ||||||
| import {ReflectiveKey} from './reflective_key'; | import {ReflectiveKey} from './reflective_key'; | ||||||
| 
 | 
 | ||||||
| @ -40,7 +41,7 @@ function constructResolvingPath(keys: any[]): string { | |||||||
|  * Base class for all errors arising from misconfigured providers. |  * Base class for all errors arising from misconfigured providers. | ||||||
|  * @stable |  * @stable | ||||||
|  */ |  */ | ||||||
| export class AbstractProviderError extends BaseException { | export class AbstractProviderError extends BaseError { | ||||||
|   /** @internal */ |   /** @internal */ | ||||||
|   message: string; |   message: string; | ||||||
| 
 | 
 | ||||||
| @ -55,7 +56,7 @@ export class AbstractProviderError extends BaseException { | |||||||
| 
 | 
 | ||||||
|   constructor( |   constructor( | ||||||
|       injector: ReflectiveInjector, key: ReflectiveKey, constructResolvingMessage: Function) { |       injector: ReflectiveInjector, key: ReflectiveKey, constructResolvingMessage: Function) { | ||||||
|     super('DI Exception'); |     super('DI Error'); | ||||||
|     this.keys = [key]; |     this.keys = [key]; | ||||||
|     this.injectors = [injector]; |     this.injectors = [injector]; | ||||||
|     this.constructResolvingMessage = constructResolvingMessage; |     this.constructResolvingMessage = constructResolvingMessage; | ||||||
| @ -147,7 +148,7 @@ export class CyclicDependencyError extends AbstractProviderError { | |||||||
|  * ``` |  * ``` | ||||||
|  * @stable |  * @stable | ||||||
|  */ |  */ | ||||||
| export class InstantiationError extends WrappedException { | export class InstantiationError extends WrappedError { | ||||||
|   /** @internal */ |   /** @internal */ | ||||||
|   keys: ReflectiveKey[]; |   keys: ReflectiveKey[]; | ||||||
| 
 | 
 | ||||||
| @ -157,7 +158,7 @@ export class InstantiationError extends WrappedException { | |||||||
|   constructor( |   constructor( | ||||||
|       injector: ReflectiveInjector, originalException: any, originalStack: any, |       injector: ReflectiveInjector, originalException: any, originalStack: any, | ||||||
|       key: ReflectiveKey) { |       key: ReflectiveKey) { | ||||||
|     super('DI Exception', originalException, originalStack, null); |     super('DI Error', originalException); | ||||||
|     this.keys = [key]; |     this.keys = [key]; | ||||||
|     this.injectors = [injector]; |     this.injectors = [injector]; | ||||||
|   } |   } | ||||||
| @ -167,9 +168,9 @@ export class InstantiationError extends WrappedException { | |||||||
|     this.keys.push(key); |     this.keys.push(key); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   get wrapperMessage(): string { |   get message(): string { | ||||||
|     var first = stringify(ListWrapper.first(this.keys).token); |     var first = stringify(ListWrapper.first(this.keys).token); | ||||||
|     return `Error during instantiation of ${first}!${constructResolvingPath(this.keys)}.`; |     return `${this.originalError.message}: Error during instantiation of ${first}!${constructResolvingPath(this.keys)}.`; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   get causeKey(): ReflectiveKey { return this.keys[0]; } |   get causeKey(): ReflectiveKey { return this.keys[0]; } | ||||||
| @ -188,7 +189,7 @@ export class InstantiationError extends WrappedException { | |||||||
|  * ``` |  * ``` | ||||||
|  * @stable |  * @stable | ||||||
|  */ |  */ | ||||||
| export class InvalidProviderError extends BaseException { | export class InvalidProviderError extends BaseError { | ||||||
|   constructor(provider: any) { |   constructor(provider: any) { | ||||||
|     super(`Invalid provider - only instances of Provider and Type are allowed, got: ${provider}`); |     super(`Invalid provider - only instances of Provider and Type are allowed, got: ${provider}`); | ||||||
|   } |   } | ||||||
| @ -223,7 +224,7 @@ export class InvalidProviderError extends BaseException { | |||||||
|  * ``` |  * ``` | ||||||
|  * @stable |  * @stable | ||||||
|  */ |  */ | ||||||
| export class NoAnnotationError extends BaseException { | export class NoAnnotationError extends BaseError { | ||||||
|   constructor(typeOrFunc: Type<any>|Function, params: any[][]) { |   constructor(typeOrFunc: Type<any>|Function, params: any[][]) { | ||||||
|     super(NoAnnotationError._genMessage(typeOrFunc, params)); |     super(NoAnnotationError._genMessage(typeOrFunc, params)); | ||||||
|   } |   } | ||||||
| @ -259,7 +260,7 @@ export class NoAnnotationError extends BaseException { | |||||||
|  * ``` |  * ``` | ||||||
|  * @stable |  * @stable | ||||||
|  */ |  */ | ||||||
| export class OutOfBoundsError extends BaseException { | export class OutOfBoundsError extends BaseError { | ||||||
|   constructor(index: number) { super(`Index ${index} is out-of-bounds.`); } |   constructor(index: number) { super(`Index ${index} is out-of-bounds.`); } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -276,7 +277,7 @@ export class OutOfBoundsError extends BaseException { | |||||||
|  * ])).toThrowError(); |  * ])).toThrowError(); | ||||||
|  * ``` |  * ``` | ||||||
|  */ |  */ | ||||||
| export class MixingMultiProvidersWithRegularProvidersError extends BaseException { | export class MixingMultiProvidersWithRegularProvidersError extends BaseError { | ||||||
|   constructor(provider1: any, provider2: any) { |   constructor(provider1: any, provider2: any) { | ||||||
|     super( |     super( | ||||||
|         'Cannot mix multi providers and regular providers, got: ' + provider1.toString() + ' ' + |         'Cannot mix multi providers and regular providers, got: ' + provider1.toString() + ' ' + | ||||||
|  | |||||||
| @ -7,13 +7,13 @@ | |||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {ListWrapper} from '../facade/collection'; | import {ListWrapper} from '../facade/collection'; | ||||||
| import {BaseException, unimplemented} from '../facade/exceptions'; | import {unimplemented} from '../facade/errors'; | ||||||
| import {Type} from '../type'; | import {Type} from '../type'; | ||||||
| 
 | 
 | ||||||
| import {Injector, THROW_IF_NOT_FOUND} from './injector'; | import {Injector, THROW_IF_NOT_FOUND} from './injector'; | ||||||
| import {SelfMetadata, SkipSelfMetadata} from './metadata'; | import {SelfMetadata, SkipSelfMetadata} from './metadata'; | ||||||
| import {Provider} from './provider'; | import {Provider} from './provider'; | ||||||
| import {AbstractProviderError, CyclicDependencyError, InstantiationError, NoProviderError, OutOfBoundsError} from './reflective_exceptions'; | import {AbstractProviderError, CyclicDependencyError, InstantiationError, NoProviderError, OutOfBoundsError} from './reflective_errors'; | ||||||
| import {ReflectiveKey} from './reflective_key'; | import {ReflectiveKey} from './reflective_key'; | ||||||
| import {ReflectiveDependency, ResolvedReflectiveFactory, ResolvedReflectiveProvider, resolveReflectiveProviders} from './reflective_provider'; | import {ReflectiveDependency, ResolvedReflectiveFactory, ResolvedReflectiveProvider, resolveReflectiveProviders} from './reflective_provider'; | ||||||
| 
 | 
 | ||||||
| @ -797,7 +797,7 @@ export class ReflectiveInjector_ implements ReflectiveInjector { | |||||||
|               d19); |               d19); | ||||||
|           break; |           break; | ||||||
|         default: |         default: | ||||||
|           throw new BaseException( |           throw new Error( | ||||||
|               `Cannot instantiate '${provider.key.displayName}' because it has more than 20 dependencies`); |               `Cannot instantiate '${provider.key.displayName}' because it has more than 20 dependencies`); | ||||||
|       } |       } | ||||||
|     } catch (e) { |     } catch (e) { | ||||||
|  | |||||||
| @ -6,7 +6,6 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException} from '../facade/exceptions'; |  | ||||||
| import {isBlank, stringify} from '../facade/lang'; | import {isBlank, stringify} from '../facade/lang'; | ||||||
| 
 | 
 | ||||||
| import {resolveForwardRef} from './forward_ref'; | import {resolveForwardRef} from './forward_ref'; | ||||||
| @ -34,7 +33,7 @@ export class ReflectiveKey { | |||||||
|    */ |    */ | ||||||
|   constructor(public token: Object, public id: number) { |   constructor(public token: Object, public id: number) { | ||||||
|     if (isBlank(token)) { |     if (isBlank(token)) { | ||||||
|       throw new BaseException('Token must be defined!'); |       throw new Error('Token must be defined!'); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -14,7 +14,7 @@ import {Type} from '../type'; | |||||||
| import {resolveForwardRef} from './forward_ref'; | import {resolveForwardRef} from './forward_ref'; | ||||||
| import {DependencyMetadata, HostMetadata, InjectMetadata, OptionalMetadata, SelfMetadata, SkipSelfMetadata} from './metadata'; | import {DependencyMetadata, HostMetadata, InjectMetadata, OptionalMetadata, SelfMetadata, SkipSelfMetadata} from './metadata'; | ||||||
| import {ClassProvider, ExistingProvider, FactoryProvider, Provider, TypeProvider, ValueProvider} from './provider'; | import {ClassProvider, ExistingProvider, FactoryProvider, Provider, TypeProvider, ValueProvider} from './provider'; | ||||||
| import {InvalidProviderError, MixingMultiProvidersWithRegularProvidersError, NoAnnotationError} from './reflective_exceptions'; | import {InvalidProviderError, MixingMultiProvidersWithRegularProvidersError, NoAnnotationError} from './reflective_errors'; | ||||||
| import {ReflectiveKey} from './reflective_key'; | import {ReflectiveKey} from './reflective_key'; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -6,22 +6,12 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseWrappedException} from './base_wrapped_exception'; | import {WrappedError} from './facade/errors'; | ||||||
| import {isListLikeIterable} from './collection'; |  | ||||||
| import {isBlank, isPresent} from './lang'; |  | ||||||
| 
 |  | ||||||
| class _ArrayLogger { |  | ||||||
|   res: any[] = []; |  | ||||||
|   log(s: any): void { this.res.push(s); } |  | ||||||
|   logError(s: any): void { this.res.push(s); } |  | ||||||
|   logGroup(s: any): void { this.res.push(s); } |  | ||||||
|   logGroupEnd(){}; |  | ||||||
| } |  | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * Provides a hook for centralized exception handling. |  * Provides a hook for centralized exception handling. | ||||||
|  * |  * | ||||||
|  * The default implementation of `ExceptionHandler` prints error messages to the `Console`. To |  * The default implementation of `ErrorHandler` prints error messages to the `Console`. To | ||||||
|  * intercept error handling, |  * intercept error handling, | ||||||
|  * write a custom exception handler that replaces this default as appropriate for your app. |  * write a custom exception handler that replaces this default as appropriate for your app. | ||||||
|  * |  * | ||||||
| @ -29,112 +19,88 @@ class _ArrayLogger { | |||||||
|  * |  * | ||||||
|  * ```javascript
 |  * ```javascript
 | ||||||
|  * |  * | ||||||
|  * class MyExceptionHandler implements ExceptionHandler { |  * class MyExceptionHandler implements ErrorHandler { | ||||||
|  *   call(error, stackTrace = null, reason = null) { |  *   call(error, stackTrace = null, reason = null) { | ||||||
|  *     // do something with the exception
 |  *     // do something with the exception
 | ||||||
|  *   } |  *   } | ||||||
|  * } |  * } | ||||||
|  * |  * | ||||||
|  * @NgModule({ |  * @NgModule({ | ||||||
|  *   providers: [{provide: ExceptionHandler, useClass: MyExceptionHandler}] |  *   providers: [{provide: ErrorHandler, useClass: MyErrorHandler}] | ||||||
|  * }) |  * }) | ||||||
|  * class MyModule {} |  * class MyModule {} | ||||||
|  * ``` |  * ``` | ||||||
|  * @stable |  * @stable | ||||||
|  */ |  */ | ||||||
| export class ExceptionHandler { | export class ErrorHandler { | ||||||
|   constructor(private _logger: any, private _rethrowException: boolean = true) {} |   /** | ||||||
|  |    * @internal | ||||||
|  |    */ | ||||||
|  |   _console: Console = console; | ||||||
| 
 | 
 | ||||||
|   static exceptionToString(exception: any, stackTrace: any = null, reason: string = null): string { |   constructor(private rethrowError: boolean = true) {} | ||||||
|     var l = new _ArrayLogger(); |  | ||||||
|     var e = new ExceptionHandler(l, false); |  | ||||||
|     e.call(exception, stackTrace, reason); |  | ||||||
|     return l.res.join('\n'); |  | ||||||
|   } |  | ||||||
| 
 | 
 | ||||||
|   call(exception: any, stackTrace: any = null, reason: string = null): void { |   handleError(error: any): void { | ||||||
|     var originalException = this._findOriginalException(exception); |     var originalError = this._findOriginalError(error); | ||||||
|     var originalStack = this._findOriginalStack(exception); |     var originalStack = this._findOriginalStack(error); | ||||||
|     var context = this._findContext(exception); |     var context = this._findContext(error); | ||||||
| 
 | 
 | ||||||
|     this._logger.logGroup(`EXCEPTION: ${this._extractMessage(exception)}`); |     this._console.error(`EXCEPTION: ${this._extractMessage(error)}`); | ||||||
| 
 | 
 | ||||||
|     if (isPresent(stackTrace) && isBlank(originalStack)) { |     if (originalError) { | ||||||
|       this._logger.logError('STACKTRACE:'); |       this._console.error(`ORIGINAL EXCEPTION: ${this._extractMessage(originalError)}`); | ||||||
|       this._logger.logError(this._longStackTrace(stackTrace)); |  | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     if (isPresent(reason)) { |     if (originalStack) { | ||||||
|       this._logger.logError(`REASON: ${reason}`); |       this._console.error('ORIGINAL STACKTRACE:'); | ||||||
|  |       this._console.error(originalStack); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     if (isPresent(originalException)) { |     if (context) { | ||||||
|       this._logger.logError(`ORIGINAL EXCEPTION: ${this._extractMessage(originalException)}`); |       this._console.error('ERROR CONTEXT:'); | ||||||
|  |       this._console.error(context); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     if (isPresent(originalStack)) { |  | ||||||
|       this._logger.logError('ORIGINAL STACKTRACE:'); |  | ||||||
|       this._logger.logError(this._longStackTrace(originalStack)); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     if (isPresent(context)) { |  | ||||||
|       this._logger.logError('ERROR CONTEXT:'); |  | ||||||
|       this._logger.logError(context); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     this._logger.logGroupEnd(); |  | ||||||
| 
 |  | ||||||
|     // We rethrow exceptions, so operations like 'bootstrap' will result in an error
 |     // We rethrow exceptions, so operations like 'bootstrap' will result in an error
 | ||||||
|     // when an exception happens. If we do not rethrow, bootstrap will always succeed.
 |     // when an error happens. If we do not rethrow, bootstrap will always succeed.
 | ||||||
|     if (this._rethrowException) throw exception; |     if (this.rethrowError) throw error; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /** @internal */ |   /** @internal */ | ||||||
|   _extractMessage(exception: any): string { |   _extractMessage(error: any): string { | ||||||
|     return exception instanceof BaseWrappedException ? exception.wrapperMessage : |     return error instanceof Error ? error.message : error.toString(); | ||||||
|                                                        exception.toString(); |  | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /** @internal */ |   /** @internal */ | ||||||
|   _longStackTrace(stackTrace: any): any { |   _findContext(error: any): any { | ||||||
|     return isListLikeIterable(stackTrace) ? (<any[]>stackTrace).join('\n\n-----async gap-----\n') : |     if (error) { | ||||||
|                                             stackTrace.toString(); |       return error.context ? error.context : | ||||||
|   } |                              this._findContext((error as WrappedError).originalError); | ||||||
| 
 |     } else { | ||||||
|   /** @internal */ |  | ||||||
|   _findContext(exception: any): any { |  | ||||||
|     try { |  | ||||||
|       if (!(exception instanceof BaseWrappedException)) return null; |  | ||||||
|       return isPresent(exception.context) ? exception.context : |  | ||||||
|                                             this._findContext(exception.originalException); |  | ||||||
|     } catch (e) { |  | ||||||
|       // exception.context can throw an exception. if it happens, we ignore the context.
 |  | ||||||
|       return null; |       return null; | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /** @internal */ |   /** @internal */ | ||||||
|   _findOriginalException(exception: any): any { |   _findOriginalError(error: any): any { | ||||||
|     if (!(exception instanceof BaseWrappedException)) return null; |     var e = (error as WrappedError).originalError; | ||||||
| 
 |     while (e && (e as WrappedError).originalError) { | ||||||
|     var e = exception.originalException; |       e = (e as WrappedError).originalError; | ||||||
|     while (e instanceof BaseWrappedException && isPresent(e.originalException)) { |  | ||||||
|       e = e.originalException; |  | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     return e; |     return e; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /** @internal */ |   /** @internal */ | ||||||
|   _findOriginalStack(exception: any): any { |   _findOriginalStack(error: any): string { | ||||||
|     if (!(exception instanceof BaseWrappedException)) return null; |     if (!(error instanceof Error)) return null; | ||||||
| 
 | 
 | ||||||
|     var e = exception; |     var e: any = error; | ||||||
|     var stack = exception.originalStack; |     var stack: string = e.stack; | ||||||
|     while (e instanceof BaseWrappedException && isPresent(e.originalException)) { |     while (e instanceof Error && (e as WrappedError).originalError) { | ||||||
|       e = e.originalException; |       e = (e as WrappedError).originalError; | ||||||
|       if (e instanceof BaseWrappedException && isPresent(e.originalException)) { |       if (e instanceof Error && e.stack) { | ||||||
|         stack = e.originalStack; |         stack = e.stack; | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -7,11 +7,10 @@ | |||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| // Public API for compiler
 | // Public API for compiler
 | ||||||
| export {COMPILER_OPTIONS, Compiler, CompilerFactory, CompilerOptions, ComponentStillLoadingError, ModuleWithComponentFactories} from './linker/compiler'; | export {COMPILER_OPTIONS, Compiler, CompilerFactory, CompilerOptions, ModuleWithComponentFactories} from './linker/compiler'; | ||||||
| export {ComponentFactory, ComponentRef} from './linker/component_factory'; | export {ComponentFactory, ComponentRef} from './linker/component_factory'; | ||||||
| export {ComponentFactoryResolver, NoComponentFactoryError} from './linker/component_factory_resolver'; | export {ComponentFactoryResolver} from './linker/component_factory_resolver'; | ||||||
| export {ElementRef} from './linker/element_ref'; | export {ElementRef} from './linker/element_ref'; | ||||||
| export {ExpressionChangedAfterItHasBeenCheckedException} from './linker/exceptions'; |  | ||||||
| export {NgModuleFactory, NgModuleRef} from './linker/ng_module_factory'; | export {NgModuleFactory, NgModuleRef} from './linker/ng_module_factory'; | ||||||
| export {NgModuleFactoryLoader} from './linker/ng_module_factory_loader'; | export {NgModuleFactoryLoader} from './linker/ng_module_factory_loader'; | ||||||
| export {QueryList} from './linker/query_list'; | export {QueryList} from './linker/query_list'; | ||||||
|  | |||||||
| @ -7,7 +7,7 @@ | |||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {OpaqueToken} from '../di'; | import {OpaqueToken} from '../di'; | ||||||
| import {BaseException} from '../facade/exceptions'; | import {BaseError} from '../facade/errors'; | ||||||
| import {stringify} from '../facade/lang'; | import {stringify} from '../facade/lang'; | ||||||
| import {ViewEncapsulation} from '../metadata'; | import {ViewEncapsulation} from '../metadata'; | ||||||
| import {Type} from '../type'; | import {Type} from '../type'; | ||||||
| @ -22,7 +22,7 @@ import {NgModuleFactory} from './ng_module_factory'; | |||||||
|  * |  * | ||||||
|  * @stable |  * @stable | ||||||
|  */ |  */ | ||||||
| export class ComponentStillLoadingError extends BaseException { | export class ComponentStillLoadingError extends BaseError { | ||||||
|   constructor(public compType: Type<any>) { |   constructor(public compType: Type<any>) { | ||||||
|     super(`Can't compile synchronously as ${stringify(compType)} is still being loaded!`); |     super(`Can't compile synchronously as ${stringify(compType)} is still being loaded!`); | ||||||
|   } |   } | ||||||
| @ -41,7 +41,7 @@ export class ModuleWithComponentFactories<T> { | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| function _throwError() { | function _throwError() { | ||||||
|   throw new BaseException(`Runtime compiler is not loaded`); |   throw new Error(`Runtime compiler is not loaded`); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  | |||||||
| @ -8,7 +8,7 @@ | |||||||
| 
 | 
 | ||||||
| import {ChangeDetectorRef} from '../change_detection/change_detection'; | import {ChangeDetectorRef} from '../change_detection/change_detection'; | ||||||
| import {Injector} from '../di/injector'; | import {Injector} from '../di/injector'; | ||||||
| import {unimplemented} from '../facade/exceptions'; | import {unimplemented} from '../facade/errors'; | ||||||
| import {isBlank} from '../facade/lang'; | import {isBlank} from '../facade/lang'; | ||||||
| import {Type} from '../type'; | import {Type} from '../type'; | ||||||
| import {AppElement} from './element'; | import {AppElement} from './element'; | ||||||
|  | |||||||
| @ -6,17 +6,18 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException} from '../facade/exceptions'; | import {BaseError} from '../facade/errors'; | ||||||
| import {stringify} from '../facade/lang'; | import {stringify} from '../facade/lang'; | ||||||
| import {Type} from '../type'; | import {Type} from '../type'; | ||||||
| 
 | 
 | ||||||
| import {ComponentFactory} from './component_factory'; | import {ComponentFactory} from './component_factory'; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| /** | /** | ||||||
|  * @stable |  * @stable | ||||||
|  */ |  */ | ||||||
| export class NoComponentFactoryError extends BaseException { | export class NoComponentFactoryError extends BaseError { | ||||||
|   constructor(public component: Function) { |   constructor(public component: Function) { | ||||||
|     super(`No component factory found for ${stringify(component)}`); |     super(`No component factory found for ${stringify(component)}`); | ||||||
|   } |   } | ||||||
|  | |||||||
| @ -8,7 +8,6 @@ | |||||||
| 
 | 
 | ||||||
| import {Injector} from '../di/injector'; | import {Injector} from '../di/injector'; | ||||||
| import {ListWrapper} from '../facade/collection'; | import {ListWrapper} from '../facade/collection'; | ||||||
| import {BaseException} from '../facade/exceptions'; |  | ||||||
| import {isPresent} from '../facade/lang'; | import {isPresent} from '../facade/lang'; | ||||||
| 
 | 
 | ||||||
| import {ElementRef} from './element_ref'; | import {ElementRef} from './element_ref'; | ||||||
| @ -63,7 +62,7 @@ export class AppElement { | |||||||
|   moveView(view: AppView<any>, currentIndex: number) { |   moveView(view: AppView<any>, currentIndex: number) { | ||||||
|     var previousIndex = this.nestedViews.indexOf(view); |     var previousIndex = this.nestedViews.indexOf(view); | ||||||
|     if (view.type === ViewType.COMPONENT) { |     if (view.type === ViewType.COMPONENT) { | ||||||
|       throw new BaseException(`Component views can't be moved!`); |       throw new Error(`Component views can't be moved!`); | ||||||
|     } |     } | ||||||
|     var nestedViews = this.nestedViews; |     var nestedViews = this.nestedViews; | ||||||
|     if (nestedViews == null) { |     if (nestedViews == null) { | ||||||
| @ -87,7 +86,7 @@ export class AppElement { | |||||||
| 
 | 
 | ||||||
|   attachView(view: AppView<any>, viewIndex: number) { |   attachView(view: AppView<any>, viewIndex: number) { | ||||||
|     if (view.type === ViewType.COMPONENT) { |     if (view.type === ViewType.COMPONENT) { | ||||||
|       throw new BaseException(`Component views can't be moved!`); |       throw new Error(`Component views can't be moved!`); | ||||||
|     } |     } | ||||||
|     var nestedViews = this.nestedViews; |     var nestedViews = this.nestedViews; | ||||||
|     if (nestedViews == null) { |     if (nestedViews == null) { | ||||||
| @ -111,7 +110,7 @@ export class AppElement { | |||||||
|   detachView(viewIndex: number): AppView<any> { |   detachView(viewIndex: number): AppView<any> { | ||||||
|     var view = ListWrapper.removeAt(this.nestedViews, viewIndex); |     var view = ListWrapper.removeAt(this.nestedViews, viewIndex); | ||||||
|     if (view.type === ViewType.COMPONENT) { |     if (view.type === ViewType.COMPONENT) { | ||||||
|       throw new BaseException(`Component views can't be moved!`); |       throw new Error(`Component views can't be moved!`); | ||||||
|     } |     } | ||||||
|     view.detach(); |     view.detach(); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -7,7 +7,10 @@ | |||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {UNINITIALIZED} from '../change_detection/change_detection_util'; | import {UNINITIALIZED} from '../change_detection/change_detection_util'; | ||||||
| import {BaseException, WrappedException} from '../facade/exceptions'; | import {BaseError, WrappedError} from '../facade/errors'; | ||||||
|  | 
 | ||||||
|  | import {DebugContext} from './debug_context'; | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
| @ -37,15 +40,15 @@ import {BaseException, WrappedException} from '../facade/exceptions'; | |||||||
|  * |  * | ||||||
|  *   set prop(v) { |  *   set prop(v) { | ||||||
|  *     // this updates the parent property, which is disallowed during change detection
 |  *     // this updates the parent property, which is disallowed during change detection
 | ||||||
|  *     // this will result in ExpressionChangedAfterItHasBeenCheckedException
 |  *     // this will result in ExpressionChangedAfterItHasBeenCheckedError
 | ||||||
|  *     this.parent.parentProp = "updated"; |  *     this.parent.parentProp = "updated"; | ||||||
|  *   } |  *   } | ||||||
|  * } |  * } | ||||||
|  * ``` |  * ``` | ||||||
|  * @stable |  * @stable | ||||||
|  */ |  */ | ||||||
| export class ExpressionChangedAfterItHasBeenCheckedException extends BaseException { | export class ExpressionChangedAfterItHasBeenCheckedError extends BaseError { | ||||||
|   constructor(oldValue: any, currValue: any, context: any) { |   constructor(oldValue: any, currValue: any) { | ||||||
|     let msg = |     let msg = | ||||||
|         `Expression has changed after it was checked. Previous value: '${oldValue}'. Current value: '${currValue}'.`; |         `Expression has changed after it was checked. Previous value: '${oldValue}'. Current value: '${currValue}'.`; | ||||||
|     if (oldValue === UNINITIALIZED) { |     if (oldValue === UNINITIALIZED) { | ||||||
| @ -64,9 +67,15 @@ export class ExpressionChangedAfterItHasBeenCheckedException extends BaseExcepti | |||||||
|  * be useful for debugging. |  * be useful for debugging. | ||||||
|  * @stable |  * @stable | ||||||
|  */ |  */ | ||||||
| export class ViewWrappedException extends WrappedException { | export class ViewWrappedError extends WrappedError { | ||||||
|   constructor(originalException: any, originalStack: any, context: any) { |   /** | ||||||
|     super(`Error in ${context.source}`, originalException, originalStack, context); |    * DebugContext | ||||||
|  |    */ | ||||||
|  |   context: DebugContext; | ||||||
|  | 
 | ||||||
|  |   constructor(originalError: any, context: DebugContext) { | ||||||
|  |     super(`Error in ${context.source}`, originalError); | ||||||
|  |     this.context = context; | ||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -78,6 +87,6 @@ export class ViewWrappedException extends WrappedException { | |||||||
|  * This is an internal Angular error. |  * This is an internal Angular error. | ||||||
|  * @stable |  * @stable | ||||||
|  */ |  */ | ||||||
| export class ViewDestroyedException extends BaseException { | export class ViewDestroyedError extends BaseError { | ||||||
|   constructor(details: string) { super(`Attempt to use a destroyed view: ${details}`); } |   constructor(details: string) { super(`Attempt to use a destroyed view: ${details}`); } | ||||||
| } | } | ||||||
|  | |||||||
| @ -7,7 +7,7 @@ | |||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {Injector, THROW_IF_NOT_FOUND} from '../di/injector'; | import {Injector, THROW_IF_NOT_FOUND} from '../di/injector'; | ||||||
| import {BaseException, unimplemented} from '../facade/exceptions'; | import {unimplemented} from '../facade/errors'; | ||||||
| import {stringify} from '../facade/lang'; | import {stringify} from '../facade/lang'; | ||||||
| import {Type} from '../type'; | import {Type} from '../type'; | ||||||
| import {ComponentFactory} from './component_factory'; | import {ComponentFactory} from './component_factory'; | ||||||
| @ -107,7 +107,7 @@ export abstract class NgModuleInjector<T> extends CodegenComponentFactoryResolve | |||||||
| 
 | 
 | ||||||
|   destroy(): void { |   destroy(): void { | ||||||
|     if (this._destroyed) { |     if (this._destroyed) { | ||||||
|       throw new BaseException( |       throw new Error( | ||||||
|           `The ng module ${stringify(this.instance.constructor)} has already been destroyed.`); |           `The ng module ${stringify(this.instance.constructor)} has already been destroyed.`); | ||||||
|     } |     } | ||||||
|     this._destroyed = true; |     this._destroyed = true; | ||||||
|  | |||||||
| @ -21,7 +21,7 @@ import {RenderComponentType, RenderDebugInfo, Renderer} from '../render/api'; | |||||||
| import {DebugContext, StaticNodeDebugInfo} from './debug_context'; | import {DebugContext, StaticNodeDebugInfo} from './debug_context'; | ||||||
| import {AppElement} from './element'; | import {AppElement} from './element'; | ||||||
| import {ElementInjector} from './element_injector'; | import {ElementInjector} from './element_injector'; | ||||||
| import {ExpressionChangedAfterItHasBeenCheckedException, ViewDestroyedException, ViewWrappedException} from './exceptions'; | import {ExpressionChangedAfterItHasBeenCheckedError, ViewDestroyedError, ViewWrappedError} from './errors'; | ||||||
| import {ViewRef_} from './view_ref'; | import {ViewRef_} from './view_ref'; | ||||||
| import {ViewType} from './view_type'; | import {ViewType} from './view_type'; | ||||||
| import {ViewUtils, ensureSlotCount, flattenNestedViewRenderNodes} from './view_utils'; | import {ViewUtils, ensureSlotCount, flattenNestedViewRenderNodes} from './view_utils'; | ||||||
| @ -357,7 +357,7 @@ export abstract class AppView<T> { | |||||||
| 
 | 
 | ||||||
|   eventHandler(cb: Function): Function { return cb; } |   eventHandler(cb: Function): Function { return cb; } | ||||||
| 
 | 
 | ||||||
|   throwDestroyedError(details: string): void { throw new ViewDestroyedException(details); } |   throwDestroyedError(details: string): void { throw new ViewDestroyedError(details); } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export class DebugAppView<T> extends AppView<T> { | export class DebugAppView<T> extends AppView<T> { | ||||||
| @ -376,7 +376,7 @@ export class DebugAppView<T> extends AppView<T> { | |||||||
|     try { |     try { | ||||||
|       return super.create(context, givenProjectableNodes, rootSelectorOrNode); |       return super.create(context, givenProjectableNodes, rootSelectorOrNode); | ||||||
|     } catch (e) { |     } catch (e) { | ||||||
|       this._rethrowWithContext(e, e.stack); |       this._rethrowWithContext(e); | ||||||
|       throw e; |       throw e; | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| @ -386,7 +386,7 @@ export class DebugAppView<T> extends AppView<T> { | |||||||
|     try { |     try { | ||||||
|       return super.injectorGet(token, nodeIndex, notFoundResult); |       return super.injectorGet(token, nodeIndex, notFoundResult); | ||||||
|     } catch (e) { |     } catch (e) { | ||||||
|       this._rethrowWithContext(e, e.stack); |       this._rethrowWithContext(e); | ||||||
|       throw e; |       throw e; | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| @ -396,7 +396,7 @@ export class DebugAppView<T> extends AppView<T> { | |||||||
|     try { |     try { | ||||||
|       super.detach(); |       super.detach(); | ||||||
|     } catch (e) { |     } catch (e) { | ||||||
|       this._rethrowWithContext(e, e.stack); |       this._rethrowWithContext(e); | ||||||
|       throw e; |       throw e; | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| @ -406,7 +406,7 @@ export class DebugAppView<T> extends AppView<T> { | |||||||
|     try { |     try { | ||||||
|       super.destroyLocal(); |       super.destroyLocal(); | ||||||
|     } catch (e) { |     } catch (e) { | ||||||
|       this._rethrowWithContext(e, e.stack); |       this._rethrowWithContext(e); | ||||||
|       throw e; |       throw e; | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| @ -416,7 +416,7 @@ export class DebugAppView<T> extends AppView<T> { | |||||||
|     try { |     try { | ||||||
|       super.detectChanges(throwOnChange); |       super.detectChanges(throwOnChange); | ||||||
|     } catch (e) { |     } catch (e) { | ||||||
|       this._rethrowWithContext(e, e.stack); |       this._rethrowWithContext(e); | ||||||
|       throw e; |       throw e; | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| @ -427,13 +427,13 @@ export class DebugAppView<T> extends AppView<T> { | |||||||
|     return this._currentDebugContext = new DebugContext(this, nodeIndex, rowNum, colNum); |     return this._currentDebugContext = new DebugContext(this, nodeIndex, rowNum, colNum); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   private _rethrowWithContext(e: any, stack: any) { |   private _rethrowWithContext(e: any) { | ||||||
|     if (!(e instanceof ViewWrappedException)) { |     if (!(e instanceof ViewWrappedError)) { | ||||||
|       if (!(e instanceof ExpressionChangedAfterItHasBeenCheckedException)) { |       if (!(e instanceof ExpressionChangedAfterItHasBeenCheckedError)) { | ||||||
|         this.cdMode = ChangeDetectorStatus.Errored; |         this.cdMode = ChangeDetectorStatus.Errored; | ||||||
|       } |       } | ||||||
|       if (isPresent(this._currentDebugContext)) { |       if (isPresent(this._currentDebugContext)) { | ||||||
|         throw new ViewWrappedException(e, stack, this._currentDebugContext); |         throw new ViewWrappedError(e, this._currentDebugContext); | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| @ -445,7 +445,7 @@ export class DebugAppView<T> extends AppView<T> { | |||||||
|       try { |       try { | ||||||
|         return superHandler(event); |         return superHandler(event); | ||||||
|       } catch (e) { |       } catch (e) { | ||||||
|         this._rethrowWithContext(e, e.stack); |         this._rethrowWithContext(e); | ||||||
|         throw e; |         throw e; | ||||||
|       } |       } | ||||||
|     }; |     }; | ||||||
|  | |||||||
| @ -8,7 +8,7 @@ | |||||||
| 
 | 
 | ||||||
| import {Injector} from '../di/injector'; | import {Injector} from '../di/injector'; | ||||||
| import {ListWrapper} from '../facade/collection'; | import {ListWrapper} from '../facade/collection'; | ||||||
| import {unimplemented} from '../facade/exceptions'; | import {unimplemented} from '../facade/errors'; | ||||||
| import {isPresent} from '../facade/lang'; | import {isPresent} from '../facade/lang'; | ||||||
| import {WtfScopeFn, wtfCreateScope, wtfLeave} from '../profile/profile'; | import {WtfScopeFn, wtfCreateScope, wtfLeave} from '../profile/profile'; | ||||||
| import {ComponentFactory, ComponentRef} from './component_factory'; | import {ComponentFactory, ComponentRef} from './component_factory'; | ||||||
|  | |||||||
| @ -8,7 +8,7 @@ | |||||||
| 
 | 
 | ||||||
| import {ChangeDetectorRef} from '../change_detection/change_detector_ref'; | import {ChangeDetectorRef} from '../change_detection/change_detector_ref'; | ||||||
| import {ChangeDetectorStatus} from '../change_detection/constants'; | import {ChangeDetectorStatus} from '../change_detection/constants'; | ||||||
| import {unimplemented} from '../facade/exceptions'; | import {unimplemented} from '../facade/errors'; | ||||||
| import {AppView} from './view'; | import {AppView} from './view'; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  | |||||||
| @ -11,13 +11,12 @@ import {devModeEqual} from '../change_detection/change_detection'; | |||||||
| import {UNINITIALIZED} from '../change_detection/change_detection_util'; | import {UNINITIALIZED} from '../change_detection/change_detection_util'; | ||||||
| import {Inject, Injectable} from '../di/decorators'; | import {Inject, Injectable} from '../di/decorators'; | ||||||
| import {ListWrapper} from '../facade/collection'; | import {ListWrapper} from '../facade/collection'; | ||||||
| import {BaseException} from '../facade/exceptions'; |  | ||||||
| import {isBlank, isPresent, looseIdentical} from '../facade/lang'; | import {isBlank, isPresent, looseIdentical} from '../facade/lang'; | ||||||
| import {ViewEncapsulation} from '../metadata/view'; | import {ViewEncapsulation} from '../metadata/view'; | ||||||
| import {RenderComponentType, Renderer, RootRenderer} from '../render/api'; | import {RenderComponentType, Renderer, RootRenderer} from '../render/api'; | ||||||
| import {Sanitizer} from '../security'; | import {Sanitizer} from '../security'; | ||||||
| import {AppElement} from './element'; | import {AppElement} from './element'; | ||||||
| import {ExpressionChangedAfterItHasBeenCheckedException} from './exceptions'; | import {ExpressionChangedAfterItHasBeenCheckedError} from './errors'; | ||||||
| 
 | 
 | ||||||
| @Injectable() | @Injectable() | ||||||
| export class ViewUtils { | export class ViewUtils { | ||||||
| @ -124,7 +123,7 @@ export function interpolate( | |||||||
|           c3 + _toStringWithNull(a4) + c4 + _toStringWithNull(a5) + c5 + _toStringWithNull(a6) + |           c3 + _toStringWithNull(a4) + c4 + _toStringWithNull(a5) + c5 + _toStringWithNull(a6) + | ||||||
|           c6 + _toStringWithNull(a7) + c7 + _toStringWithNull(a8) + c8 + _toStringWithNull(a9) + c9; |           c6 + _toStringWithNull(a7) + c7 + _toStringWithNull(a8) + c8 + _toStringWithNull(a9) + c9; | ||||||
|     default: |     default: | ||||||
|       throw new BaseException(`Does not support more than 9 expressions`); |       throw new Error(`Does not support more than 9 expressions`); | ||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -135,7 +134,7 @@ function _toStringWithNull(v: any): string { | |||||||
| export function checkBinding(throwOnChange: boolean, oldValue: any, newValue: any): boolean { | export function checkBinding(throwOnChange: boolean, oldValue: any, newValue: any): boolean { | ||||||
|   if (throwOnChange) { |   if (throwOnChange) { | ||||||
|     if (!devModeEqual(oldValue, newValue)) { |     if (!devModeEqual(oldValue, newValue)) { | ||||||
|       throw new ExpressionChangedAfterItHasBeenCheckedException(oldValue, newValue, null); |       throw new ExpressionChangedAfterItHasBeenCheckedError(oldValue, newValue); | ||||||
|     } |     } | ||||||
|     return false; |     return false; | ||||||
|   } else { |   } else { | ||||||
|  | |||||||
| @ -7,7 +7,6 @@ | |||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {Map, MapWrapper, Set, SetWrapper, StringMapWrapper} from '../facade/collection'; | import {Map, MapWrapper, Set, SetWrapper, StringMapWrapper} from '../facade/collection'; | ||||||
| import {BaseException} from '../facade/exceptions'; |  | ||||||
| import {isPresent} from '../facade/lang'; | import {isPresent} from '../facade/lang'; | ||||||
| import {Type} from '../type'; | import {Type} from '../type'; | ||||||
| import {PlatformReflectionCapabilities} from './platform_reflection_capabilities'; | import {PlatformReflectionCapabilities} from './platform_reflection_capabilities'; | ||||||
| @ -67,7 +66,7 @@ export class Reflector extends ReflectorReader { | |||||||
|    */ |    */ | ||||||
|   listUnusedKeys(): any[] { |   listUnusedKeys(): any[] { | ||||||
|     if (this._usedKeys == null) { |     if (this._usedKeys == null) { | ||||||
|       throw new BaseException('Usage tracking is disabled'); |       throw new Error('Usage tracking is disabled'); | ||||||
|     } |     } | ||||||
|     var allTypes = MapWrapper.keys(this._injectableInfo); |     var allTypes = MapWrapper.keys(this._injectableInfo); | ||||||
|     return allTypes.filter(key => !SetWrapper.has(this._usedKeys, key)); |     return allTypes.filter(key => !SetWrapper.has(this._usedKeys, key)); | ||||||
|  | |||||||
| @ -10,7 +10,7 @@ import {AnimationKeyframe} from '../../src/animation/animation_keyframe'; | |||||||
| import {AnimationPlayer} from '../../src/animation/animation_player'; | import {AnimationPlayer} from '../../src/animation/animation_player'; | ||||||
| import {AnimationStyles} from '../../src/animation/animation_styles'; | import {AnimationStyles} from '../../src/animation/animation_styles'; | ||||||
| import {Injector} from '../di/injector'; | import {Injector} from '../di/injector'; | ||||||
| import {unimplemented} from '../facade/exceptions'; | import {unimplemented} from '../facade/errors'; | ||||||
| import {ViewEncapsulation} from '../metadata/view'; | import {ViewEncapsulation} from '../metadata/view'; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  | |||||||
| @ -8,7 +8,6 @@ | |||||||
| 
 | 
 | ||||||
| import {Injectable} from '../di/decorators'; | import {Injectable} from '../di/decorators'; | ||||||
| import {Map, MapWrapper} from '../facade/collection'; | import {Map, MapWrapper} from '../facade/collection'; | ||||||
| import {BaseException} from '../facade/exceptions'; |  | ||||||
| import {scheduleMicroTask} from '../facade/lang'; | import {scheduleMicroTask} from '../facade/lang'; | ||||||
| import {NgZone} from '../zone/ng_zone'; | import {NgZone} from '../zone/ng_zone'; | ||||||
| 
 | 
 | ||||||
| @ -68,7 +67,7 @@ export class Testability { | |||||||
|   decreasePendingRequestCount(): number { |   decreasePendingRequestCount(): number { | ||||||
|     this._pendingCount -= 1; |     this._pendingCount -= 1; | ||||||
|     if (this._pendingCount < 0) { |     if (this._pendingCount < 0) { | ||||||
|       throw new BaseException('pending async requests below zero'); |       throw new Error('pending async requests below zero'); | ||||||
|     } |     } | ||||||
|     this._runCallbacksIfReady(); |     this._runCallbacksIfReady(); | ||||||
|     return this._pendingCount; |     return this._pendingCount; | ||||||
|  | |||||||
| @ -7,7 +7,6 @@ | |||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {EventEmitter} from '../facade/async'; | import {EventEmitter} from '../facade/async'; | ||||||
| import {BaseException} from '../facade/exceptions'; |  | ||||||
| 
 | 
 | ||||||
| import {NgZoneImpl} from './ng_zone_impl'; | import {NgZoneImpl} from './ng_zone_impl'; | ||||||
| 
 | 
 | ||||||
| @ -88,12 +87,12 @@ export class NgZone { | |||||||
|   static isInAngularZone(): boolean { return NgZoneImpl.isInAngularZone(); } |   static isInAngularZone(): boolean { return NgZoneImpl.isInAngularZone(); } | ||||||
|   static assertInAngularZone(): void { |   static assertInAngularZone(): void { | ||||||
|     if (!NgZoneImpl.isInAngularZone()) { |     if (!NgZoneImpl.isInAngularZone()) { | ||||||
|       throw new BaseException('Expected to be in Angular Zone, but it is not!'); |       throw new Error('Expected to be in Angular Zone, but it is not!'); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|   static assertNotInAngularZone(): void { |   static assertNotInAngularZone(): void { | ||||||
|     if (NgZoneImpl.isInAngularZone()) { |     if (NgZoneImpl.isInAngularZone()) { | ||||||
|       throw new BaseException('Expected to not be in Angular Zone, but it is!'); |       throw new Error('Expected to not be in Angular Zone, but it is!'); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -8,15 +8,13 @@ | |||||||
| 
 | 
 | ||||||
| import {APP_BOOTSTRAP_LISTENER, APP_INITIALIZER, ChangeDetectorRef, CompilerFactory, Component, Injector, NgModule, PlatformRef, Type} from '@angular/core'; | import {APP_BOOTSTRAP_LISTENER, APP_INITIALIZER, ChangeDetectorRef, CompilerFactory, Component, Injector, NgModule, PlatformRef, Type} from '@angular/core'; | ||||||
| import {ApplicationRef, ApplicationRef_} from '@angular/core/src/application_ref'; | import {ApplicationRef, ApplicationRef_} from '@angular/core/src/application_ref'; | ||||||
| import {Console} from '@angular/core/src/console'; | import {ErrorHandler} from '@angular/core/src/error_handler'; | ||||||
| import {ComponentRef} from '@angular/core/src/linker/component_factory'; | import {ComponentRef} from '@angular/core/src/linker/component_factory'; | ||||||
| import {BrowserModule} from '@angular/platform-browser'; | import {BrowserModule} from '@angular/platform-browser'; | ||||||
| import {getDOM} from '@angular/platform-browser/src/dom/dom_adapter'; | import {getDOM} from '@angular/platform-browser/src/dom/dom_adapter'; | ||||||
| import {DOCUMENT} from '@angular/platform-browser/src/dom/dom_tokens'; | import {DOCUMENT} from '@angular/platform-browser/src/dom/dom_tokens'; | ||||||
| import {expect} from '@angular/platform-browser/testing/matchers'; | import {expect} from '@angular/platform-browser/testing/matchers'; | ||||||
| 
 | 
 | ||||||
| import {ExceptionHandler} from '../src/facade/exception_handler'; |  | ||||||
| import {BaseException} from '../src/facade/exceptions'; |  | ||||||
| import {TestBed, async, inject, withModule} from '../testing'; | import {TestBed, async, inject, withModule} from '../testing'; | ||||||
| 
 | 
 | ||||||
| import {SpyChangeDetectorRef} from './spies'; | import {SpyChangeDetectorRef} from './spies'; | ||||||
| @ -27,14 +25,14 @@ class SomeComponent { | |||||||
| 
 | 
 | ||||||
| export function main() { | export function main() { | ||||||
|   describe('bootstrap', () => { |   describe('bootstrap', () => { | ||||||
|     var errorLogger: _ArrayLogger; |     var mockConsole: MockConsole; | ||||||
|     var fakeDoc: Document; |     var fakeDoc: Document; | ||||||
| 
 | 
 | ||||||
|     beforeEach(() => { |     beforeEach(() => { | ||||||
|       fakeDoc = getDOM().createHtmlDocument(); |       fakeDoc = getDOM().createHtmlDocument(); | ||||||
|       const el = getDOM().createElement('comp', fakeDoc); |       const el = getDOM().createElement('comp', fakeDoc); | ||||||
|       getDOM().appendChild(fakeDoc.body, el); |       getDOM().appendChild(fakeDoc.body, el); | ||||||
|       errorLogger = new _ArrayLogger(); |       mockConsole = new MockConsole(); | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|     type CreateModuleOptions = {providers?: any[], ngDoBootstrap?: any, bootstrap?: any[]}; |     type CreateModuleOptions = {providers?: any[], ngDoBootstrap?: any, bootstrap?: any[]}; | ||||||
| @ -48,12 +46,13 @@ export function main() { | |||||||
|       } else { |       } else { | ||||||
|         options = providersOrOptions || {}; |         options = providersOrOptions || {}; | ||||||
|       } |       } | ||||||
|  |       const errorHandler = new ErrorHandler(false); | ||||||
|  |       errorHandler._console = mockConsole as any; | ||||||
| 
 | 
 | ||||||
|       @NgModule({ |       @NgModule({ | ||||||
|         providers: [ |         providers: [ | ||||||
|           {provide: Console, useValue: new _MockConsole()}, |           {provide: ErrorHandler, useValue: errorHandler}, {provide: DOCUMENT, useValue: fakeDoc}, | ||||||
|           {provide: ExceptionHandler, useValue: new ExceptionHandler(errorLogger, false)}, |           options.providers || [] | ||||||
|           {provide: DOCUMENT, useValue: fakeDoc}, options.providers || [] |  | ||||||
|         ], |         ], | ||||||
|         imports: [BrowserModule], |         imports: [BrowserModule], | ||||||
|         declarations: [SomeComponent], |         declarations: [SomeComponent], | ||||||
| @ -153,7 +152,7 @@ export function main() { | |||||||
|                  // we don't have an injector and therefore no way of
 |                  // we don't have an injector and therefore no way of
 | ||||||
|                  // getting the exception handler. So
 |                  // getting the exception handler. So
 | ||||||
|                  // the error is only rethrown but not logged via the exception handler.
 |                  // the error is only rethrown but not logged via the exception handler.
 | ||||||
|                  expect(errorLogger.res).toEqual([]); |                  expect(mockConsole.res).toEqual([]); | ||||||
|                }); |                }); | ||||||
|          })); |          })); | ||||||
| 
 | 
 | ||||||
| @ -165,7 +164,7 @@ export function main() { | |||||||
|                ])) |                ])) | ||||||
|                .then(() => expect(false).toBe(true), (e) => { |                .then(() => expect(false).toBe(true), (e) => { | ||||||
|                  expect(e).toBe('Test'); |                  expect(e).toBe('Test'); | ||||||
|                  expect(errorLogger.res).toEqual(['EXCEPTION: Test']); |                  expect(mockConsole.res).toEqual(['EXCEPTION: Test']); | ||||||
|                }); |                }); | ||||||
|          })); |          })); | ||||||
| 
 | 
 | ||||||
| @ -206,7 +205,7 @@ export function main() { | |||||||
|                  const expectedErrMsg = |                  const expectedErrMsg = | ||||||
|                      `The module MyModule was bootstrapped, but it does not declare "@NgModule.bootstrap" components nor a "ngDoBootstrap" method. Please define one of these.`; |                      `The module MyModule was bootstrapped, but it does not declare "@NgModule.bootstrap" components nor a "ngDoBootstrap" method. Please define one of these.`; | ||||||
|                  expect(e.message).toEqual(expectedErrMsg); |                  expect(e.message).toEqual(expectedErrMsg); | ||||||
|                  expect(errorLogger.res).toEqual(['EXCEPTION: ' + expectedErrMsg]); |                  expect(mockConsole.res[0]).toEqual('EXCEPTION: ' + expectedErrMsg); | ||||||
|                }); |                }); | ||||||
|          })); |          })); | ||||||
|     }); |     }); | ||||||
| @ -243,7 +242,7 @@ export function main() { | |||||||
|            // we don't have an injector and therefore no way of
 |            // we don't have an injector and therefore no way of
 | ||||||
|            // getting the exception handler. So
 |            // getting the exception handler. So
 | ||||||
|            // the error is only rethrown but not logged via the exception handler.
 |            // the error is only rethrown but not logged via the exception handler.
 | ||||||
|            expect(errorLogger.res).toEqual([]); |            expect(mockConsole.res).toEqual([]); | ||||||
|          })); |          })); | ||||||
| 
 | 
 | ||||||
|       it('should rethrow promise errors even if the exceptionHandler is not rethrowing', |       it('should rethrow promise errors even if the exceptionHandler is not rethrowing', | ||||||
| @ -255,7 +254,7 @@ export function main() { | |||||||
|            defaultPlatform.bootstrapModuleFactory(moduleFactory) |            defaultPlatform.bootstrapModuleFactory(moduleFactory) | ||||||
|                .then(() => expect(false).toBe(true), (e) => { |                .then(() => expect(false).toBe(true), (e) => { | ||||||
|                  expect(e).toBe('Test'); |                  expect(e).toBe('Test'); | ||||||
|                  expect(errorLogger.res).toEqual(['EXCEPTION: Test']); |                  expect(mockConsole.res).toEqual(['EXCEPTION: Test']); | ||||||
|                }); |                }); | ||||||
|          })); |          })); | ||||||
|     }); |     }); | ||||||
| @ -266,15 +265,8 @@ export function main() { | |||||||
| class MyComp6 { | class MyComp6 { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| class _ArrayLogger { | class MockConsole { | ||||||
|   res: any[] = []; |   res: any[] = []; | ||||||
|   log(s: any): void { this.res.push(s); } |   log(s: any): void { this.res.push(s); } | ||||||
|   logError(s: any): void { this.res.push(s); } |   error(s: any): void { this.res.push(s); } | ||||||
|   logGroup(s: any): void { this.res.push(s); } |  | ||||||
|   logGroupEnd(){}; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| class _MockConsole implements Console { |  | ||||||
|   log(message: string) {} |  | ||||||
|   warn(message: string) {} |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -12,7 +12,6 @@ import {ReflectiveInjectorDynamicStrategy, ReflectiveInjectorInlineStrategy, Ref | |||||||
| import {ResolvedReflectiveProvider_} from '@angular/core/src/di/reflective_provider'; | import {ResolvedReflectiveProvider_} from '@angular/core/src/di/reflective_provider'; | ||||||
| import {expect} from '@angular/platform-browser/testing/matchers'; | import {expect} from '@angular/platform-browser/testing/matchers'; | ||||||
| 
 | 
 | ||||||
| import {BaseException} from '../../src/facade/exceptions'; |  | ||||||
| import {isBlank, isPresent, stringify} from '../../src/facade/lang'; | import {isBlank, isPresent, stringify} from '../../src/facade/lang'; | ||||||
| 
 | 
 | ||||||
| class CustomDependencyMetadata extends DependencyMetadata {} | class CustomDependencyMetadata extends DependencyMetadata {} | ||||||
| @ -20,7 +19,7 @@ class CustomDependencyMetadata extends DependencyMetadata {} | |||||||
| class Engine {} | class Engine {} | ||||||
| 
 | 
 | ||||||
| class BrokenEngine { | class BrokenEngine { | ||||||
|   constructor() { throw new BaseException('Broken Engine'); } |   constructor() { throw new Error('Broken Engine'); } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| class DashboardSoftware {} | class DashboardSoftware {} | ||||||
| @ -332,7 +331,7 @@ export function main() { | |||||||
|         } catch (e) { |         } catch (e) { | ||||||
|           expect(e.message).toContain( |           expect(e.message).toContain( | ||||||
|               `Error during instantiation of Engine! (${stringify(Car)} -> Engine)`); |               `Error during instantiation of Engine! (${stringify(Car)} -> Engine)`); | ||||||
|           expect(e.originalException instanceof BaseException).toBeTruthy(); |           expect(e.originalError instanceof Error).toBeTruthy(); | ||||||
|           expect(e.causeKey.token).toEqual(Engine); |           expect(e.causeKey.token).toEqual(Engine); | ||||||
|         } |         } | ||||||
|       }); |       }); | ||||||
| @ -364,7 +363,8 @@ export function main() { | |||||||
|           {provide: Engine, useFactory: (() => isBroken ? new BrokenEngine() : new Engine())} |           {provide: Engine, useFactory: (() => isBroken ? new BrokenEngine() : new Engine())} | ||||||
|         ]); |         ]); | ||||||
| 
 | 
 | ||||||
|         expect(() => injector.get(Car)).toThrowError(new RegExp('Error')); |         expect(() => injector.get(Car)) | ||||||
|  |             .toThrowError('Broken Engine: Error during instantiation of Engine! (Car -> Engine).'); | ||||||
| 
 | 
 | ||||||
|         isBroken = false; |         isBroken = false; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -6,8 +6,16 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {beforeEach, ddescribe, describe, expect, iit, inject, it, xdescribe, xit,} from '@angular/core/testing/testing_internal'; | import {WrappedError} from '@angular/core/src/facade/errors'; | ||||||
| import {BaseException, WrappedException, ExceptionHandler} from '../src/exceptions'; | import {DebugContext} from '@angular/core/src/linker/debug_context'; | ||||||
|  | import {ViewWrappedError} from '@angular/core/src/linker/errors'; | ||||||
|  | 
 | ||||||
|  | import {ErrorHandler} from '../src/error_handler'; | ||||||
|  | 
 | ||||||
|  | class MockConsole { | ||||||
|  |   res: any[] = []; | ||||||
|  |   error(s: any): void { this.res.push(s); } | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
| class _CustomException { | class _CustomException { | ||||||
|   context = 'some context'; |   context = 'some context'; | ||||||
| @ -15,74 +23,78 @@ class _CustomException { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export function main() { | export function main() { | ||||||
|   describe('ExceptionHandler', () => { |   function errorToString(error: any) { | ||||||
|  |     var logger = new MockConsole(); | ||||||
|  |     var errorHandler = new ErrorHandler(false); | ||||||
|  |     errorHandler._console = logger as any; | ||||||
|  |     errorHandler.handleError(error); | ||||||
|  |     return logger.res.join('\n'); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   function getStack(error: Error): string { | ||||||
|  |     try { | ||||||
|  |       throw error; | ||||||
|  |     } catch (e) { | ||||||
|  |       return e.stack; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   describe('ErrorHandler', () => { | ||||||
|     it('should output exception', () => { |     it('should output exception', () => { | ||||||
|       var e = ExceptionHandler.exceptionToString(new BaseException('message!')); |       var e = errorToString(new Error('message!')); | ||||||
|       expect(e).toContain('message!'); |       expect(e).toContain('message!'); | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|     it('should output stackTrace', () => { |     it('should output stackTrace', () => { | ||||||
|       var e = ExceptionHandler.exceptionToString(new BaseException('message!'), 'stack!'); |       var error = new Error('message!'); | ||||||
|       expect(e).toContain('stack!'); |       var stack = getStack(error); | ||||||
|     }); |       var e = errorToString(error); | ||||||
| 
 |       expect(e).toContain(stack); | ||||||
|     it('should join a long stackTrace', () => { |  | ||||||
|       var e = |  | ||||||
|           ExceptionHandler.exceptionToString(new BaseException('message!'), ['stack1', 'stack2']); |  | ||||||
|       expect(e).toContain('stack1'); |  | ||||||
|       expect(e).toContain('stack2'); |  | ||||||
|     }); |  | ||||||
| 
 |  | ||||||
|     it('should output reason when present', () => { |  | ||||||
|       var e = ExceptionHandler.exceptionToString(new BaseException('message!'), null, 'reason!'); |  | ||||||
|       expect(e).toContain('reason!'); |  | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|     describe('context', () => { |     describe('context', () => { | ||||||
|       it('should print context', () => { |  | ||||||
|         var e = ExceptionHandler.exceptionToString( |  | ||||||
|             new WrappedException('message!', null, null, 'context!')); |  | ||||||
|         expect(e).toContain('context!'); |  | ||||||
|       }); |  | ||||||
| 
 |  | ||||||
|       it('should print nested context', () => { |       it('should print nested context', () => { | ||||||
|         var original = new WrappedException('message!', null, null, 'context!'); |         var cause = new Error('message!'); | ||||||
|         var e = ExceptionHandler.exceptionToString(new WrappedException('message', original)); |         var stack = getStack(cause); | ||||||
|         expect(e).toContain('context!'); |         var context = { | ||||||
|       }); |           source: 'context!', | ||||||
| 
 |           toString() { return 'Context'; } | ||||||
|       it('should not print context when the passed-in exception is not a BaseException', () => { |         } as any as DebugContext; | ||||||
|         var e = ExceptionHandler.exceptionToString(new _CustomException()); |         var original = new ViewWrappedError(cause, context); | ||||||
|         expect(e).not.toContain('context'); |         var e = errorToString(new WrappedError('message', original)); | ||||||
|  |         expect(e).toEqual(`EXCEPTION: message caused by: Error in context! caused by: message!
 | ||||||
|  | ORIGINAL EXCEPTION: message! | ||||||
|  | ORIGINAL STACKTRACE: | ||||||
|  | ${stack} | ||||||
|  | ERROR CONTEXT: | ||||||
|  | Context`);
 | ||||||
|       }); |       }); | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|     describe('original exception', () => { |     describe('original exception', () => { | ||||||
|       it('should print original exception message if available (original is BaseException)', () => { |       it('should print original exception message if available (original is Error)', () => { | ||||||
|         var realOriginal = new BaseException('inner'); |         var realOriginal = new Error('inner'); | ||||||
|         var original = new WrappedException('wrapped', realOriginal); |         var stack = getStack(realOriginal); | ||||||
|         var e = |         var original = new WrappedError('wrapped', realOriginal); | ||||||
|             ExceptionHandler.exceptionToString(new WrappedException('wrappedwrapped', original)); |         var e = errorToString(new WrappedError('wrappedwrapped', original)); | ||||||
|         expect(e).toContain('inner'); |         expect(e).toContain(stack); | ||||||
|       }); |       }); | ||||||
| 
 | 
 | ||||||
|       it('should print original exception message if available (original is not BaseException)', |       it('should print original exception message if available (original is not Error)', () => { | ||||||
|          () => { |         var realOriginal = new _CustomException(); | ||||||
|            var realOriginal = new _CustomException(); |         var original = new WrappedError('wrapped', realOriginal); | ||||||
|            var original = new WrappedException('wrapped', realOriginal); |         var e = errorToString(new WrappedError('wrappedwrapped', original)); | ||||||
|            var e = |         expect(e).toContain('custom'); | ||||||
|                ExceptionHandler.exceptionToString(new WrappedException('wrappedwrapped', original)); |       }); | ||||||
|            expect(e).toContain('custom'); |  | ||||||
|          }); |  | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|     describe('original stack', () => { |     describe('original stack', () => { | ||||||
|       it('should print original stack if available', () => { |       it('should print original stack if available', () => { | ||||||
|         var realOriginal = new BaseException('inner'); |         var realOriginal = new Error('inner'); | ||||||
|         var original = new WrappedException('wrapped', realOriginal, 'originalStack'); |         var stack = getStack(realOriginal); | ||||||
|         var e = ExceptionHandler.exceptionToString( |         var original = new WrappedError('wrapped', realOriginal); | ||||||
|             new WrappedException('wrappedwrapped', original, 'wrappedStack')); |         var e = errorToString(new WrappedError('wrappedwrapped', original)); | ||||||
|         expect(e).toContain('originalStack'); |         expect(e).toContain(stack); | ||||||
|       }); |       }); | ||||||
|     }); |     }); | ||||||
|   }); |   }); | ||||||
|  | |||||||
| @ -6,7 +6,6 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException} from '@angular/core'; |  | ||||||
| import {discardPeriodicTasks, fakeAsync, flushMicrotasks, tick} from '@angular/core/testing'; | import {discardPeriodicTasks, fakeAsync, flushMicrotasks, tick} from '@angular/core/testing'; | ||||||
| import {Log, beforeEach, ddescribe, describe, iit, inject, it, xit} from '@angular/core/testing/testing_internal'; | import {Log, beforeEach, ddescribe, describe, iit, inject, it, xit} from '@angular/core/testing/testing_internal'; | ||||||
| import {expect} from '@angular/platform-browser/testing/matchers'; | import {expect} from '@angular/platform-browser/testing/matchers'; | ||||||
| @ -93,16 +92,14 @@ export function main() { | |||||||
|       it('should complain if the test throws an exception during async calls', () => { |       it('should complain if the test throws an exception during async calls', () => { | ||||||
|         expect(() => { |         expect(() => { | ||||||
|           fakeAsync(() => { |           fakeAsync(() => { | ||||||
|             resolvedPromise.then((_) => { throw new BaseException('async'); }); |             resolvedPromise.then((_) => { throw new Error('async'); }); | ||||||
|             flushMicrotasks(); |             flushMicrotasks(); | ||||||
|           })(); |           })(); | ||||||
|         }).toThrowError('Uncaught (in promise): async'); |         }).toThrowError('Uncaught (in promise): Error: async'); | ||||||
|       }); |       }); | ||||||
| 
 | 
 | ||||||
|       it('should complain if a test throws an exception', () => { |       it('should complain if a test throws an exception', () => { | ||||||
|         expect(() => { |         expect(() => { fakeAsync(() => { throw new Error('sync'); })(); }).toThrowError('sync'); | ||||||
|           fakeAsync(() => { throw new BaseException('sync'); })(); |  | ||||||
|         }).toThrowError('sync'); |  | ||||||
|       }); |       }); | ||||||
| 
 | 
 | ||||||
|     }); |     }); | ||||||
|  | |||||||
| @ -18,7 +18,6 @@ import {DomRootRenderer} from '@angular/platform-browser/src/dom/dom_renderer'; | |||||||
| 
 | 
 | ||||||
| import {EventEmitter} from '../../src/facade/async'; | import {EventEmitter} from '../../src/facade/async'; | ||||||
| import {StringMapWrapper} from '../../src/facade/collection'; | import {StringMapWrapper} from '../../src/facade/collection'; | ||||||
| import {BaseException} from '../../src/facade/exceptions'; |  | ||||||
| import {NumberWrapper, isBlank} from '../../src/facade/lang'; | import {NumberWrapper, isBlank} from '../../src/facade/lang'; | ||||||
| 
 | 
 | ||||||
| export function main() { | export function main() { | ||||||
| @ -724,7 +723,7 @@ export function main() { | |||||||
|              try { |              try { | ||||||
|                ctx.detectChanges(false); |                ctx.detectChanges(false); | ||||||
|              } catch (e) { |              } catch (e) { | ||||||
|                throw new BaseException('Second detectChanges() should not have run detection.'); |                throw new Error('Second detectChanges() should not have run detection.'); | ||||||
|              } |              } | ||||||
|              expect(directiveLog.filter(['ngOnInit'])).toEqual([]); |              expect(directiveLog.filter(['ngOnInit'])).toEqual([]); | ||||||
|            })); |            })); | ||||||
| @ -821,7 +820,7 @@ export function main() { | |||||||
|              try { |              try { | ||||||
|                ctx.detectChanges(false); |                ctx.detectChanges(false); | ||||||
|              } catch (e) { |              } catch (e) { | ||||||
|                throw new BaseException('Second detectChanges() should not have run detection.'); |                throw new Error('Second detectChanges() should not have run detection.'); | ||||||
|              } |              } | ||||||
|              expect(directiveLog.filter(['ngAfterContentInit'])).toEqual([]); |              expect(directiveLog.filter(['ngAfterContentInit'])).toEqual([]); | ||||||
|            })); |            })); | ||||||
| @ -935,7 +934,7 @@ export function main() { | |||||||
|              try { |              try { | ||||||
|                ctx.detectChanges(false); |                ctx.detectChanges(false); | ||||||
|              } catch (e) { |              } catch (e) { | ||||||
|                throw new BaseException('Second detectChanges() should not have run detection.'); |                throw new Error('Second detectChanges() should not have run detection.'); | ||||||
|              } |              } | ||||||
|              expect(directiveLog.filter(['ngAfterViewInit'])).toEqual([]); |              expect(directiveLog.filter(['ngAfterViewInit'])).toEqual([]); | ||||||
|            })); |            })); | ||||||
| @ -1342,7 +1341,7 @@ class TestDirective implements OnInit, DoCheck, OnChanges, AfterContentInit, Aft | |||||||
|   ngOnInit() { |   ngOnInit() { | ||||||
|     this.log.add(this.name, 'ngOnInit'); |     this.log.add(this.name, 'ngOnInit'); | ||||||
|     if (this.throwOn == 'ngOnInit') { |     if (this.throwOn == 'ngOnInit') { | ||||||
|       throw new BaseException('Boom!'); |       throw new Error('Boom!'); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
| @ -1352,42 +1351,42 @@ class TestDirective implements OnInit, DoCheck, OnChanges, AfterContentInit, Aft | |||||||
|     StringMapWrapper.forEach(changes, (c: SimpleChange, key: string) => r[key] = c.currentValue); |     StringMapWrapper.forEach(changes, (c: SimpleChange, key: string) => r[key] = c.currentValue); | ||||||
|     this.changes = r; |     this.changes = r; | ||||||
|     if (this.throwOn == 'ngOnChanges') { |     if (this.throwOn == 'ngOnChanges') { | ||||||
|       throw new BaseException('Boom!'); |       throw new Error('Boom!'); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   ngAfterContentInit() { |   ngAfterContentInit() { | ||||||
|     this.log.add(this.name, 'ngAfterContentInit'); |     this.log.add(this.name, 'ngAfterContentInit'); | ||||||
|     if (this.throwOn == 'ngAfterContentInit') { |     if (this.throwOn == 'ngAfterContentInit') { | ||||||
|       throw new BaseException('Boom!'); |       throw new Error('Boom!'); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   ngAfterContentChecked() { |   ngAfterContentChecked() { | ||||||
|     this.log.add(this.name, 'ngAfterContentChecked'); |     this.log.add(this.name, 'ngAfterContentChecked'); | ||||||
|     if (this.throwOn == 'ngAfterContentChecked') { |     if (this.throwOn == 'ngAfterContentChecked') { | ||||||
|       throw new BaseException('Boom!'); |       throw new Error('Boom!'); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   ngAfterViewInit() { |   ngAfterViewInit() { | ||||||
|     this.log.add(this.name, 'ngAfterViewInit'); |     this.log.add(this.name, 'ngAfterViewInit'); | ||||||
|     if (this.throwOn == 'ngAfterViewInit') { |     if (this.throwOn == 'ngAfterViewInit') { | ||||||
|       throw new BaseException('Boom!'); |       throw new Error('Boom!'); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   ngAfterViewChecked() { |   ngAfterViewChecked() { | ||||||
|     this.log.add(this.name, 'ngAfterViewChecked'); |     this.log.add(this.name, 'ngAfterViewChecked'); | ||||||
|     if (this.throwOn == 'ngAfterViewChecked') { |     if (this.throwOn == 'ngAfterViewChecked') { | ||||||
|       throw new BaseException('Boom!'); |       throw new Error('Boom!'); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   ngOnDestroy() { |   ngOnDestroy() { | ||||||
|     this.log.add(this.name, 'ngOnDestroy'); |     this.log.add(this.name, 'ngOnDestroy'); | ||||||
|     if (this.throwOn == 'ngOnDestroy') { |     if (this.throwOn == 'ngOnDestroy') { | ||||||
|       throw new BaseException('Boom!'); |       throw new Error('Boom!'); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | |||||||
| @ -6,8 +6,10 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {ANALYZE_FOR_ENTRY_COMPONENTS, Component, ComponentFactoryResolver, NoComponentFactoryError, forwardRef} from '@angular/core'; | import {ANALYZE_FOR_ENTRY_COMPONENTS, Component, ComponentFactoryResolver, forwardRef} from '@angular/core'; | ||||||
|  | import {NoComponentFactoryError} from '@angular/core/src/linker/component_factory_resolver'; | ||||||
| import {TestBed} from '@angular/core/testing'; | import {TestBed} from '@angular/core/testing'; | ||||||
|  | 
 | ||||||
| import {Console} from '../../src/console'; | import {Console} from '../../src/console'; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -23,7 +23,6 @@ import {dispatchEvent, el} from '@angular/platform-browser/testing/browser_util' | |||||||
| import {expect} from '@angular/platform-browser/testing/matchers'; | import {expect} from '@angular/platform-browser/testing/matchers'; | ||||||
| 
 | 
 | ||||||
| import {EventEmitter} from '../../src/facade/async'; | import {EventEmitter} from '../../src/facade/async'; | ||||||
| import {BaseException} from '../../src/facade/exceptions'; |  | ||||||
| import {isBlank, isPresent, stringify} from '../../src/facade/lang'; | import {isBlank, isPresent, stringify} from '../../src/facade/lang'; | ||||||
| 
 | 
 | ||||||
| const ANCHOR_ELEMENT = new OpaqueToken('AnchorElement'); | const ANCHOR_ELEMENT = new OpaqueToken('AnchorElement'); | ||||||
| @ -2091,7 +2090,7 @@ class OtherDuplicateDir { | |||||||
| 
 | 
 | ||||||
| @Directive({selector: 'directive-throwing-error'}) | @Directive({selector: 'directive-throwing-error'}) | ||||||
| class DirectiveThrowingAnError { | class DirectiveThrowingAnError { | ||||||
|   constructor() { throw new BaseException('BOOM'); } |   constructor() { throw new Error('BOOM'); } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @Component({ | @Component({ | ||||||
|  | |||||||
| @ -11,14 +11,13 @@ import {Console} from '@angular/core/src/console'; | |||||||
| import {ComponentFixture, TestBed, inject} from '@angular/core/testing'; | import {ComponentFixture, TestBed, inject} from '@angular/core/testing'; | ||||||
| import {expect} from '@angular/platform-browser/testing/matchers'; | import {expect} from '@angular/platform-browser/testing/matchers'; | ||||||
| 
 | 
 | ||||||
| import {BaseException} from '../../src/facade/exceptions'; |  | ||||||
| import {stringify} from '../../src/facade/lang'; | import {stringify} from '../../src/facade/lang'; | ||||||
| import {NgModuleInjector} from '../../src/linker/ng_module_factory'; | import {NgModuleInjector} from '../../src/linker/ng_module_factory'; | ||||||
| 
 | 
 | ||||||
| class Engine {} | class Engine {} | ||||||
| 
 | 
 | ||||||
| class BrokenEngine { | class BrokenEngine { | ||||||
|   constructor() { throw new BaseException('Broken Engine'); } |   constructor() { throw new Error('Broken Engine'); } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| class DashboardSoftware {} | class DashboardSoftware {} | ||||||
|  | |||||||
| @ -6,12 +6,11 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException} from '@angular/core'; |  | ||||||
| import {NgZone} from '@angular/core/src/zone/ng_zone'; | import {NgZone} from '@angular/core/src/zone/ng_zone'; | ||||||
| import {async, fakeAsync, flushMicrotasks} from '@angular/core/testing'; | import {async, fakeAsync, flushMicrotasks} from '@angular/core/testing'; | ||||||
| import {AsyncTestCompleter, Log, beforeEach, ddescribe, describe, expect, iit, inject, it, xdescribe, xit} from '@angular/core/testing/testing_internal'; | import {AsyncTestCompleter, Log, beforeEach, ddescribe, describe, expect, iit, inject, it, xdescribe, xit} from '@angular/core/testing/testing_internal'; | ||||||
| import {browserDetection} from '@angular/platform-browser/testing/browser_util'; | import {browserDetection} from '@angular/platform-browser/testing/browser_util'; | ||||||
| 
 | import {BaseError} from '../../src/facade/errors'; | ||||||
| import {isPresent, scheduleMicroTask} from '../../src/facade/lang'; | import {isPresent, scheduleMicroTask} from '../../src/facade/lang'; | ||||||
| 
 | 
 | ||||||
| var needsLongerTimers = browserDetection.isSlow || browserDetection.isEdge; | var needsLongerTimers = browserDetection.isSlow || browserDetection.isEdge; | ||||||
| @ -95,7 +94,7 @@ export function main() { | |||||||
|                setTimeout(() => { |                setTimeout(() => { | ||||||
|                  setTimeout(() => { |                  setTimeout(() => { | ||||||
|                    resolve(null); |                    resolve(null); | ||||||
|                    throw new BaseException('ccc'); |                    throw new BaseError('ccc'); | ||||||
|                  }, 0); |                  }, 0); | ||||||
|                }, 0); |                }, 0); | ||||||
|              }); |              }); | ||||||
| @ -118,7 +117,7 @@ export function main() { | |||||||
|                scheduleMicroTask(() => { |                scheduleMicroTask(() => { | ||||||
|                  scheduleMicroTask(() => { |                  scheduleMicroTask(() => { | ||||||
|                    resolve(null); |                    resolve(null); | ||||||
|                    throw new BaseException('ddd'); |                    throw new BaseError('ddd'); | ||||||
|                  }); |                  }); | ||||||
|                }); |                }); | ||||||
|              }); |              }); | ||||||
| @ -153,7 +152,7 @@ export function main() { | |||||||
|                setTimeout(() => { |                setTimeout(() => { | ||||||
|                  setTimeout(() => { |                  setTimeout(() => { | ||||||
|                    resolve(null); |                    resolve(null); | ||||||
|                    throw new BaseException('ccc'); |                    throw new BaseError('ccc'); | ||||||
|                  }, 0); |                  }, 0); | ||||||
|                }, 0); |                }, 0); | ||||||
|              }); |              }); | ||||||
| @ -720,7 +719,7 @@ function commonTests() { | |||||||
|     it('should call the on error callback when it is invoked via zone.runGuarded', |     it('should call the on error callback when it is invoked via zone.runGuarded', | ||||||
|        inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { |        inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { | ||||||
|          macroTask(() => { |          macroTask(() => { | ||||||
|            var exception = new BaseException('sync'); |            var exception = new BaseError('sync'); | ||||||
| 
 | 
 | ||||||
|            _zone.runGuarded(() => { throw exception; }); |            _zone.runGuarded(() => { throw exception; }); | ||||||
| 
 | 
 | ||||||
| @ -733,7 +732,7 @@ function commonTests() { | |||||||
|     it('should not call the on error callback but rethrow when it is invoked via zone.run', |     it('should not call the on error callback but rethrow when it is invoked via zone.run', | ||||||
|        inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { |        inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { | ||||||
|          macroTask(() => { |          macroTask(() => { | ||||||
|            var exception = new BaseException('sync'); |            var exception = new BaseError('sync'); | ||||||
|            expect(() => _zone.run(() => { throw exception; })).toThrowError('sync'); |            expect(() => _zone.run(() => { throw exception; })).toThrowError('sync'); | ||||||
| 
 | 
 | ||||||
|            expect(_errors.length).toBe(0); |            expect(_errors.length).toBe(0); | ||||||
| @ -743,7 +742,7 @@ function commonTests() { | |||||||
| 
 | 
 | ||||||
|     it('should call onError for errors from microtasks', |     it('should call onError for errors from microtasks', | ||||||
|        inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { |        inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { | ||||||
|          var exception = new BaseException('async'); |          var exception = new BaseError('async'); | ||||||
| 
 | 
 | ||||||
|          macroTask(() => { _zone.run(() => { scheduleMicroTask(() => { throw exception; }); }); }); |          macroTask(() => { _zone.run(() => { scheduleMicroTask(() => { throw exception; }); }); }); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -7,7 +7,6 @@ | |||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {ChangeDetectorRef, ComponentRef, DebugElement, ElementRef, NgZone, getDebugNode} from '../index'; | import {ChangeDetectorRef, ComponentRef, DebugElement, ElementRef, NgZone, getDebugNode} from '../index'; | ||||||
| import {BaseException} from '../src/facade/exceptions'; |  | ||||||
| import {scheduleMicroTask} from '../src/facade/lang'; | import {scheduleMicroTask} from '../src/facade/lang'; | ||||||
| 
 | 
 | ||||||
| import {tick} from './fake_async'; | import {tick} from './fake_async'; | ||||||
| @ -146,7 +145,7 @@ export class ComponentFixture<T> { | |||||||
|    */ |    */ | ||||||
|   autoDetectChanges(autoDetect: boolean = true) { |   autoDetectChanges(autoDetect: boolean = true) { | ||||||
|     if (this.ngZone == null) { |     if (this.ngZone == null) { | ||||||
|       throw new BaseException('Cannot call autoDetectChanges when ComponentFixtureNoNgZone is set'); |       throw new Error('Cannot call autoDetectChanges when ComponentFixtureNoNgZone is set'); | ||||||
|     } |     } | ||||||
|     this._autoDetect = autoDetect; |     this._autoDetect = autoDetect; | ||||||
|     this.detectChanges(); |     this.detectChanges(); | ||||||
|  | |||||||
| @ -6,7 +6,6 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException} from '../index'; |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| const FakeAsyncTestZoneSpec = (Zone as any)['FakeAsyncTestZoneSpec']; | const FakeAsyncTestZoneSpec = (Zone as any)['FakeAsyncTestZoneSpec']; | ||||||
| @ -53,13 +52,13 @@ export function fakeAsync(fn: Function): (...args: any[]) => any { | |||||||
|   return function(...args: any[]) { |   return function(...args: any[]) { | ||||||
|     const proxyZoneSpec = ProxyZoneSpec.assertPresent(); |     const proxyZoneSpec = ProxyZoneSpec.assertPresent(); | ||||||
|     if (_inFakeAsyncCall) { |     if (_inFakeAsyncCall) { | ||||||
|       throw new BaseException('fakeAsync() calls can not be nested'); |       throw new Error('fakeAsync() calls can not be nested'); | ||||||
|     } |     } | ||||||
|     _inFakeAsyncCall = true; |     _inFakeAsyncCall = true; | ||||||
|     try { |     try { | ||||||
|       if (!_fakeAsyncTestZoneSpec) { |       if (!_fakeAsyncTestZoneSpec) { | ||||||
|         if (proxyZoneSpec.getDelegate() instanceof FakeAsyncTestZoneSpec) { |         if (proxyZoneSpec.getDelegate() instanceof FakeAsyncTestZoneSpec) { | ||||||
|           throw new BaseException('fakeAsync() calls can not be nested'); |           throw new Error('fakeAsync() calls can not be nested'); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         _fakeAsyncTestZoneSpec = new FakeAsyncTestZoneSpec(); |         _fakeAsyncTestZoneSpec = new FakeAsyncTestZoneSpec(); | ||||||
| @ -76,13 +75,13 @@ export function fakeAsync(fn: Function): (...args: any[]) => any { | |||||||
|       } |       } | ||||||
| 
 | 
 | ||||||
|       if (_fakeAsyncTestZoneSpec.pendingPeriodicTimers.length > 0) { |       if (_fakeAsyncTestZoneSpec.pendingPeriodicTimers.length > 0) { | ||||||
|         throw new BaseException( |         throw new Error( | ||||||
|             `${_fakeAsyncTestZoneSpec.pendingPeriodicTimers.length} ` + |             `${_fakeAsyncTestZoneSpec.pendingPeriodicTimers.length} ` + | ||||||
|             `periodic timer(s) still in the queue.`); |             `periodic timer(s) still in the queue.`); | ||||||
|       } |       } | ||||||
| 
 | 
 | ||||||
|       if (_fakeAsyncTestZoneSpec.pendingTimers.length > 0) { |       if (_fakeAsyncTestZoneSpec.pendingTimers.length > 0) { | ||||||
|         throw new BaseException( |         throw new Error( | ||||||
|             `${_fakeAsyncTestZoneSpec.pendingTimers.length} timer(s) still in the queue.`); |             `${_fakeAsyncTestZoneSpec.pendingTimers.length} timer(s) still in the queue.`); | ||||||
|       } |       } | ||||||
|       return res; |       return res; | ||||||
|  | |||||||
| @ -6,9 +6,8 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {CompilerOptions, ComponentMetadataType, ComponentStillLoadingError, DirectiveMetadataType, Injector, ModuleWithComponentFactories, NgModule, NgModuleFactory, NgModuleMetadataType, NgModuleRef, NgZone, OpaqueToken, PipeMetadataType, PlatformRef, Provider, SchemaMetadata} from '../index'; | import {CompilerOptions, ComponentMetadataType, DirectiveMetadataType, Injector, ModuleWithComponentFactories, NgModule, NgModuleFactory, NgModuleMetadataType, NgModuleRef, NgZone, OpaqueToken, PipeMetadataType, PlatformRef, Provider, SchemaMetadata} from '../index'; | ||||||
| import {ListWrapper} from '../src/facade/collection'; | import {ListWrapper} from '../src/facade/collection'; | ||||||
| import {BaseException} from '../src/facade/exceptions'; |  | ||||||
| import {FunctionWrapper, stringify} from '../src/facade/lang'; | import {FunctionWrapper, stringify} from '../src/facade/lang'; | ||||||
| import {Type} from '../src/type'; | import {Type} from '../src/type'; | ||||||
| 
 | 
 | ||||||
| @ -173,7 +172,7 @@ export class TestBed implements Injector { | |||||||
|    */ |    */ | ||||||
|   initTestEnvironment(ngModule: Type<any>, platform: PlatformRef) { |   initTestEnvironment(ngModule: Type<any>, platform: PlatformRef) { | ||||||
|     if (this.platform || this.ngModule) { |     if (this.platform || this.ngModule) { | ||||||
|       throw new BaseException('Cannot set base providers because it has already been called'); |       throw new Error('Cannot set base providers because it has already been called'); | ||||||
|     } |     } | ||||||
|     this.platform = platform; |     this.platform = platform; | ||||||
|     this.ngModule = ngModule; |     this.ngModule = ngModule; | ||||||
| @ -256,7 +255,7 @@ export class TestBed implements Injector { | |||||||
|         this._moduleWithComponentFactories = |         this._moduleWithComponentFactories = | ||||||
|             this._compiler.compileModuleAndAllComponentsSync(moduleType); |             this._compiler.compileModuleAndAllComponentsSync(moduleType); | ||||||
|       } catch (e) { |       } catch (e) { | ||||||
|         if (e instanceof ComponentStillLoadingError) { |         if (e.compType) { | ||||||
|           throw new Error( |           throw new Error( | ||||||
|               `This test module uses the component ${stringify(e.compType)} which is using a "templateUrl", but they were never compiled. ` + |               `This test module uses the component ${stringify(e.compType)} which is using a "templateUrl", but they were never compiled. ` + | ||||||
|               `Please call "TestBed.compileComponents" before your test.`); |               `Please call "TestBed.compileComponents" before your test.`); | ||||||
| @ -296,7 +295,7 @@ export class TestBed implements Injector { | |||||||
| 
 | 
 | ||||||
|   private _assertNotInstantiated(methodName: string, methodDescription: string) { |   private _assertNotInstantiated(methodName: string, methodDescription: string) { | ||||||
|     if (this._instantiated) { |     if (this._instantiated) { | ||||||
|       throw new BaseException( |       throw new Error( | ||||||
|           `Cannot ${methodDescription} when the test module has already been instantiated. ` + |           `Cannot ${methodDescription} when the test module has already been instantiated. ` + | ||||||
|           `Make sure you are not using \`inject\` before \`${methodName}\`.`); |           `Make sure you are not using \`inject\` before \`${methodName}\`.`); | ||||||
|     } |     } | ||||||
| @ -344,7 +343,7 @@ export class TestBed implements Injector { | |||||||
|     const componentFactory = this._moduleWithComponentFactories.componentFactories.find( |     const componentFactory = this._moduleWithComponentFactories.componentFactories.find( | ||||||
|         (compFactory) => compFactory.componentType === component); |         (compFactory) => compFactory.componentType === component); | ||||||
|     if (!componentFactory) { |     if (!componentFactory) { | ||||||
|       throw new BaseException( |       throw new Error( | ||||||
|           `Cannot create the component ${stringify(component)} as it was not imported into the testing module!`); |           `Cannot create the component ${stringify(component)} as it was not imported into the testing module!`); | ||||||
|     } |     } | ||||||
|     const noNgZone = this.get(ComponentFixtureNoNgZone, false); |     const noNgZone = this.get(ComponentFixtureNoNgZone, false); | ||||||
|  | |||||||
| @ -7,7 +7,7 @@ | |||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {Compiler, CompilerOptions, ComponentMetadataType, DirectiveMetadataType, Injector, NgModuleMetadataType, PipeMetadataType} from '../index'; | import {Compiler, CompilerOptions, ComponentMetadataType, DirectiveMetadataType, Injector, NgModuleMetadataType, PipeMetadataType} from '../index'; | ||||||
| import {unimplemented} from '../src/facade/exceptions'; | import {unimplemented} from '../src/facade/errors'; | ||||||
| import {Type} from '../src/type'; | import {Type} from '../src/type'; | ||||||
| import {MetadataOverride} from './metadata_override'; | import {MetadataOverride} from './metadata_override'; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -6,59 +6,52 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseWrappedException} from './base_wrapped_exception'; |  | ||||||
| import {ExceptionHandler} from './exception_handler'; |  | ||||||
| 
 |  | ||||||
| export {ExceptionHandler} from './exception_handler'; |  | ||||||
| 
 |  | ||||||
| /** |  | ||||||
|  * @stable |  | ||||||
|  */ |  | ||||||
| export class BaseException extends Error { |  | ||||||
|   public stack: any; |  | ||||||
|   constructor(public message: string = '--') { |  | ||||||
|     super(message); |  | ||||||
|     this.stack = (<any>new Error(message)).stack; |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   toString(): string { return this.message; } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| /** |  | ||||||
|  * Wraps an exception and provides additional context or information. |  | ||||||
|  * @stable |  | ||||||
|  */ |  | ||||||
| export class WrappedException extends BaseWrappedException { |  | ||||||
|   private _wrapperStack: any; |  | ||||||
| 
 |  | ||||||
|   constructor( |  | ||||||
|       private _wrapperMessage: string, private _originalException: any /** TODO #9100 */, |  | ||||||
|       private _originalStack?: any /** TODO #9100 */, private _context?: any /** TODO #9100 */) { |  | ||||||
|     super(_wrapperMessage); |  | ||||||
|     this._wrapperStack = (<any>new Error(_wrapperMessage)).stack; |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   get wrapperMessage(): string { return this._wrapperMessage; } |  | ||||||
| 
 |  | ||||||
|   get wrapperStack(): any { return this._wrapperStack; } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|   get originalException(): any { return this._originalException; } |  | ||||||
| 
 |  | ||||||
|   get originalStack(): any { return this._originalStack; } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|   get context(): any { return this._context; } |  | ||||||
| 
 |  | ||||||
|   get message(): string { return ExceptionHandler.exceptionToString(this); } |  | ||||||
| 
 |  | ||||||
|   toString(): string { return this.message; } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| export function makeTypeError(message?: string): Error { |  | ||||||
|   return new TypeError(message); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| export function unimplemented(): any { | export function unimplemented(): any { | ||||||
|   throw new BaseException('unimplemented'); |   throw new Error('unimplemented'); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * @stable | ||||||
|  |  */ | ||||||
|  | export class BaseError extends Error { | ||||||
|  |   /** | ||||||
|  |    * @internal | ||||||
|  |    */ | ||||||
|  |   _nativeError: Error; | ||||||
|  | 
 | ||||||
|  |   constructor(message: string) { | ||||||
|  |     // Errors don't use current this, instead they create a new instance.
 | ||||||
|  |     // We have to do forward all of our api to the nativeInstance.
 | ||||||
|  |     var nativeError = super(message) as any as Error; | ||||||
|  |     this._nativeError = nativeError; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   get message() { return this._nativeError.message; } | ||||||
|  |   set message(message) { this._nativeError.message = message; } | ||||||
|  |   get name() { return this._nativeError.name; } | ||||||
|  |   get stack() { return (this._nativeError as any).stack; } | ||||||
|  |   set stack(value) { (this._nativeError as any).stack = value; } | ||||||
|  |   toString() { return this._nativeError.toString(); } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * @stable | ||||||
|  |  */ | ||||||
|  | export class WrappedError extends BaseError { | ||||||
|  |   originalError: any; | ||||||
|  | 
 | ||||||
|  |   /** | ||||||
|  |    * @internal | ||||||
|  |    */ | ||||||
|  |   _nativeError: Error; | ||||||
|  | 
 | ||||||
|  |   constructor(message: string, error: any) { | ||||||
|  |     super(`${message} caused by: ${error instanceof Error ? error.message: error }`); | ||||||
|  |     this.originalError = error; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   get stack() { | ||||||
|  |     return ((this.originalError instanceof Error ? this.originalError : this._nativeError) as any) | ||||||
|  |         .stack; | ||||||
|  |   } | ||||||
| } | } | ||||||
|  | |||||||
| @ -6,6 +6,8 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
|  | import {BaseError} from './errors'; | ||||||
|  | 
 | ||||||
| export interface BrowserNodeGlobal { | export interface BrowserNodeGlobal { | ||||||
|   Object: typeof Object; |   Object: typeof Object; | ||||||
|   Array: typeof Array; |   Array: typeof Array; | ||||||
| @ -240,14 +242,6 @@ export class StringJoiner { | |||||||
|   toString(): string { return this.parts.join(''); } |   toString(): string { return this.parts.join(''); } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export class NumberParseError extends Error { |  | ||||||
|   name: string; |  | ||||||
| 
 |  | ||||||
|   constructor(public message: string) { super(); } |  | ||||||
| 
 |  | ||||||
|   toString(): string { return this.message; } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
| export class NumberWrapper { | export class NumberWrapper { | ||||||
|   static toFixed(n: number, fractionDigits: number): string { return n.toFixed(fractionDigits); } |   static toFixed(n: number, fractionDigits: number): string { return n.toFixed(fractionDigits); } | ||||||
| @ -257,7 +251,7 @@ export class NumberWrapper { | |||||||
|   static parseIntAutoRadix(text: string): number { |   static parseIntAutoRadix(text: string): number { | ||||||
|     var result: number = parseInt(text); |     var result: number = parseInt(text); | ||||||
|     if (isNaN(result)) { |     if (isNaN(result)) { | ||||||
|       throw new NumberParseError('Invalid integer literal when parsing ' + text); |       throw new Error('Invalid integer literal when parsing ' + text); | ||||||
|     } |     } | ||||||
|     return result; |     return result; | ||||||
|   } |   } | ||||||
| @ -277,8 +271,7 @@ export class NumberWrapper { | |||||||
|         return result; |         return result; | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|     throw new NumberParseError( |     throw new Error('Invalid integer literal when parsing ' + text + ' in base ' + radix); | ||||||
|         'Invalid integer literal when parsing ' + text + ' in base ' + radix); |  | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   // TODO: NaN is a valid literal but is returned by parseFloat to indicate an error.
 |   // TODO: NaN is a valid literal but is returned by parseFloat to indicate an error.
 | ||||||
|  | |||||||
| @ -6,7 +6,6 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException} from '@angular/core'; |  | ||||||
| import {Observable} from '../facade/async'; | import {Observable} from '../facade/async'; | ||||||
| import {isPresent} from '../facade/lang'; | import {isPresent} from '../facade/lang'; | ||||||
| import {AbstractControl} from '../model'; | import {AbstractControl} from '../model'; | ||||||
| @ -19,7 +18,7 @@ import {AbstractControl} from '../model'; | |||||||
|  * @stable |  * @stable | ||||||
|  */ |  */ | ||||||
| export abstract class AbstractControlDirective { | export abstract class AbstractControlDirective { | ||||||
|   get control(): AbstractControl { throw new BaseException('unimplemented'); } |   get control(): AbstractControl { throw new Error('unimplemented'); } | ||||||
| 
 | 
 | ||||||
|   get value(): any { return isPresent(this.control) ? this.control.value : null; } |   get value(): any { return isPresent(this.control) ? this.control.value : null; } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -6,14 +6,13 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException} from '@angular/core'; |  | ||||||
| 
 | 
 | ||||||
| import {AbstractControlDirective} from './abstract_control_directive'; | import {AbstractControlDirective} from './abstract_control_directive'; | ||||||
| import {ControlValueAccessor} from './control_value_accessor'; | import {ControlValueAccessor} from './control_value_accessor'; | ||||||
| import {AsyncValidatorFn, ValidatorFn} from './validators'; | import {AsyncValidatorFn, ValidatorFn} from './validators'; | ||||||
| 
 | 
 | ||||||
| function unimplemented(): any { | function unimplemented(): any { | ||||||
|   throw new BaseException('unimplemented'); |   throw new Error('unimplemented'); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  | |||||||
| @ -6,7 +6,7 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException, Directive, Host, Inject, Input, OnChanges, OnDestroy, Optional, Output, Self, SimpleChanges, forwardRef} from '@angular/core'; | import {Directive, Host, Inject, Input, OnChanges, OnDestroy, Optional, Output, Self, SimpleChanges, forwardRef} from '@angular/core'; | ||||||
| 
 | 
 | ||||||
| import {EventEmitter} from '../facade/async'; | import {EventEmitter} from '../facade/async'; | ||||||
| import {FormControl} from '../model'; | import {FormControl} from '../model'; | ||||||
|  | |||||||
| @ -6,7 +6,7 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException, Directive, Host, Inject, Input, OnDestroy, OnInit, Optional, Self, SkipSelf, forwardRef} from '@angular/core'; | import {Directive, Host, Inject, Input, OnDestroy, OnInit, Optional, Self, SkipSelf, forwardRef} from '@angular/core'; | ||||||
| 
 | 
 | ||||||
| import {NG_ASYNC_VALIDATORS, NG_VALIDATORS} from '../validators'; | import {NG_ASYNC_VALIDATORS, NG_VALIDATORS} from '../validators'; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -6,7 +6,7 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException, Directive, ElementRef, Injectable, Injector, Input, OnDestroy, OnInit, Renderer, forwardRef} from '@angular/core'; | import {Directive, ElementRef, Injectable, Injector, Input, OnDestroy, OnInit, Renderer, forwardRef} from '@angular/core'; | ||||||
| 
 | 
 | ||||||
| import {ListWrapper} from '../facade/collection'; | import {ListWrapper} from '../facade/collection'; | ||||||
| import {isPresent} from '../facade/lang'; | import {isPresent} from '../facade/lang'; | ||||||
| @ -139,7 +139,7 @@ export class RadioControlValueAccessor implements ControlValueAccessor, | |||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   private _throwNameError(): void { |   private _throwNameError(): void { | ||||||
|     throw new BaseException(` |     throw new Error(` | ||||||
|       If you define both a name and a formControlName attribute on your radio button, their values |       If you define both a name and a formControlName attribute on your radio button, their values | ||||||
|       must match. Ex: <input type="radio" formControlName="food" name="food"> |       must match. Ex: <input type="radio" formControlName="food" name="food"> | ||||||
|     `);
 |     `);
 | ||||||
|  | |||||||
| @ -6,7 +6,7 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException, Directive, Inject, Input, OnChanges, Optional, Output, Self, SimpleChanges, forwardRef} from '@angular/core'; | import {Directive, Inject, Input, OnChanges, Optional, Output, Self, SimpleChanges, forwardRef} from '@angular/core'; | ||||||
| 
 | 
 | ||||||
| import {EventEmitter} from '../../facade/async'; | import {EventEmitter} from '../../facade/async'; | ||||||
| import {ListWrapper, StringMapWrapper} from '../../facade/collection'; | import {ListWrapper, StringMapWrapper} from '../../facade/collection'; | ||||||
|  | |||||||
| @ -6,13 +6,12 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {BaseException} from '@angular/core'; |  | ||||||
| 
 | 
 | ||||||
| import {FormErrorExamples as Examples} from './error_examples'; | import {FormErrorExamples as Examples} from './error_examples'; | ||||||
| 
 | 
 | ||||||
| export class ReactiveErrors { | export class ReactiveErrors { | ||||||
|   static controlParentException(): void { |   static controlParentException(): void { | ||||||
|     throw new BaseException( |     throw new Error( | ||||||
|         `formControlName must be used with a parent formGroup directive.  You'll want to add a formGroup
 |         `formControlName must be used with a parent formGroup directive.  You'll want to add a formGroup
 | ||||||
|        directive and pass it an existing FormGroup instance (you can create one in your class). |        directive and pass it an existing FormGroup instance (you can create one in your class). | ||||||
| 
 | 
 | ||||||
| @ -22,7 +21,7 @@ export class ReactiveErrors { | |||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   static ngModelGroupException(): void { |   static ngModelGroupException(): void { | ||||||
|     throw new BaseException( |     throw new Error( | ||||||
|         `formControlName cannot be used with an ngModelGroup parent. It is only compatible with parents
 |         `formControlName cannot be used with an ngModelGroup parent. It is only compatible with parents
 | ||||||
|        that also have a "form" prefix: formGroupName, formArrayName, or formGroup. |        that also have a "form" prefix: formGroupName, formArrayName, or formGroup. | ||||||
| 
 | 
 | ||||||
| @ -35,7 +34,7 @@ export class ReactiveErrors { | |||||||
|         ${Examples.ngModelGroup}`);
 |         ${Examples.ngModelGroup}`);
 | ||||||
|   } |   } | ||||||
|   static missingFormException(): void { |   static missingFormException(): void { | ||||||
|     throw new BaseException(`formGroup expects a FormGroup instance. Please pass one in.
 |     throw new Error(`formGroup expects a FormGroup instance. Please pass one in.
 | ||||||
| 
 | 
 | ||||||
|        Example: |        Example: | ||||||
| 
 | 
 | ||||||
| @ -43,7 +42,7 @@ export class ReactiveErrors { | |||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   static groupParentException(): void { |   static groupParentException(): void { | ||||||
|     throw new BaseException( |     throw new Error( | ||||||
|         `formGroupName must be used with a parent formGroup directive.  You'll want to add a formGroup
 |         `formGroupName must be used with a parent formGroup directive.  You'll want to add a formGroup
 | ||||||
|       directive and pass it an existing FormGroup instance (you can create one in your class). |       directive and pass it an existing FormGroup instance (you can create one in your class). | ||||||
| 
 | 
 | ||||||
| @ -53,7 +52,7 @@ export class ReactiveErrors { | |||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   static arrayParentException(): void { |   static arrayParentException(): void { | ||||||
|     throw new BaseException( |     throw new Error( | ||||||
|         `formArrayName must be used with a parent formGroup directive.  You'll want to add a formGroup
 |         `formArrayName must be used with a parent formGroup directive.  You'll want to add a formGroup
 | ||||||
|        directive and pass it an existing FormGroup instance (you can create one in your class). |        directive and pass it an existing FormGroup instance (you can create one in your class). | ||||||
| 
 | 
 | ||||||
|  | |||||||
Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user