Skip to content

Commit d21c7bd

Browse files
committed
refactor(compiler): remove unused code
BREAKING CHANGE: - Removes `ChangeDetection`, use a binding for `ChangeDetectorGenConfig` instead to configure change detection. - `RenderElementRef.renderBoundElementIndex` was renamed to `RenderElementRef.boundElementIndex`. - Removes `ViewLoader`, use `XHRImpl` instead.
1 parent b154f1a commit d21c7bd

File tree

81 files changed

+139
-7364
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

81 files changed

+139
-7364
lines changed

modules/angular2/src/compiler/change_definition_factory.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,9 @@ import {isPresent, isBlank} from 'angular2/src/core/facade/lang';
33
import {reflector} from 'angular2/src/core/reflection/reflection';
44

55
import {
6-
ChangeDetection,
76
DirectiveIndex,
87
BindingRecord,
98
DirectiveRecord,
10-
ProtoChangeDetector,
119
ChangeDetectionStrategy,
1210
ChangeDetectorDefinition,
1311
ChangeDetectorGenConfig,

modules/angular2/src/core/application_common.ts

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ import {
1212
import {BrowserDomAdapter} from 'angular2/src/core/dom/browser_adapter';
1313
import {BrowserGetTestability} from 'angular2/src/core/testability/browser_testability';
1414
import {DOM} from 'angular2/src/core/dom/dom_adapter';
15-
import {ViewLoader} from 'angular2/src/core/render/dom/compiler/view_loader';
16-
import {StyleInliner} from 'angular2/src/core/render/dom/compiler/style_inliner';
1715
import {Promise, PromiseWrapper, PromiseCompleter} from 'angular2/src/core/facade/async';
1816
import {XHR} from 'angular2/src/core/render/xhr';
1917
import {XHRImpl} from 'angular2/src/core/render/xhr_impl';
@@ -31,15 +29,8 @@ import {
3129
DynamicComponentLoader
3230
} from 'angular2/src/core/compiler/dynamic_component_loader';
3331
import {TestabilityRegistry, Testability} from 'angular2/src/core/testability/testability';
34-
import {Renderer, RenderCompiler} from 'angular2/src/core/render/api';
35-
import {
36-
DomRenderer,
37-
DOCUMENT,
38-
DefaultDomCompiler,
39-
APP_ID_RANDOM_BINDING,
40-
MAX_IN_MEMORY_ELEMENTS_PER_TEMPLATE,
41-
TemplateCloner
42-
} from 'angular2/src/core/render/render';
32+
import {Renderer} from 'angular2/src/core/render/api';
33+
import {DomRenderer, DOCUMENT, APP_ID_RANDOM_BINDING} from 'angular2/src/core/render/render';
4334
import {ElementSchemaRegistry} from 'angular2/src/core/render/dom/schema/element_schema_registry';
4435
import {
4536
DomElementSchemaRegistry
@@ -72,17 +63,11 @@ export function applicationDomBindings(): Array<Type | Binding | any[]> {
7263
DomRenderer,
7364
bind(Renderer).toAlias(DomRenderer),
7465
APP_ID_RANDOM_BINDING,
75-
TemplateCloner,
76-
bind(MAX_IN_MEMORY_ELEMENTS_PER_TEMPLATE).toValue(20),
77-
DefaultDomCompiler,
7866
bind(ElementSchemaRegistry).toValue(new DomElementSchemaRegistry()),
79-
bind(RenderCompiler).toAlias(DefaultDomCompiler),
8067
DomSharedStylesHost,
8168
bind(SharedStylesHost).toAlias(DomSharedStylesHost),
82-
ViewLoader,
8369
EXCEPTION_BINDING,
8470
bind(XHR).toValue(new XHRImpl()),
85-
StyleInliner,
8671
Testability,
8772
AnchorBasedAppRootUrl,
8873
bind(AppRootUrl).toAlias(AnchorBasedAppRootUrl),

modules/angular2/src/core/application_ref.ts

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,6 @@ import {LifeCycle} from 'angular2/src/core/life_cycle/life_cycle';
2121
import {
2222
Parser,
2323
Lexer,
24-
ChangeDetection,
25-
DynamicChangeDetection,
26-
JitChangeDetection,
27-
PreGeneratedChangeDetection,
2824
IterableDiffers,
2925
defaultIterableDiffers,
3026
KeyValueDiffers,
@@ -39,9 +35,7 @@ import {DEFAULT_PIPES} from 'angular2/src/core/pipes';
3935
import {ViewResolver} from './compiler/view_resolver';
4036
import {DirectiveResolver} from './compiler/directive_resolver';
4137
import {PipeResolver} from './compiler/pipe_resolver';
42-
import {StyleUrlResolver} from 'angular2/src/core/render/dom/compiler/style_url_resolver';
4338
import {UrlResolver} from 'angular2/src/core/services/url_resolver';
44-
import {ComponentUrlMapper} from 'angular2/src/core/compiler/component_url_mapper';
4539
import {
4640
APP_ID_RANDOM_BINDING,
4741
} from 'angular2/src/core/render/render';
@@ -90,12 +84,6 @@ function _componentBindings(appComponentType: Type): Array<Type | Binding | any[
9084
* application, regardless of whether it runs on the UI thread or in a web worker.
9185
*/
9286
export function applicationCommonBindings(): Array<Type | Binding | any[]> {
93-
var bestChangeDetection = new DynamicChangeDetection();
94-
if (PreGeneratedChangeDetection.isSupported()) {
95-
bestChangeDetection = new PreGeneratedChangeDetection();
96-
} else if (JitChangeDetection.isSupported()) {
97-
bestChangeDetection = new JitChangeDetection();
98-
}
9987
return [
10088
Compiler,
10189
APP_ID_RANDOM_BINDING,
@@ -109,12 +97,9 @@ export function applicationCommonBindings(): Array<Type | Binding | any[]> {
10997
DEFAULT_PIPES,
11098
bind(IterableDiffers).toValue(defaultIterableDiffers),
11199
bind(KeyValueDiffers).toValue(defaultKeyValueDiffers),
112-
bind(ChangeDetection).toValue(bestChangeDetection),
113100
DirectiveResolver,
114101
UrlResolver,
115-
StyleUrlResolver,
116102
PipeResolver,
117-
ComponentUrlMapper,
118103
Parser,
119104
Lexer,
120105
DynamicComponentLoader,
Lines changed: 2 additions & 108 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,8 @@
1-
import {JitProtoChangeDetector} from './jit_proto_change_detector';
2-
import {PregenProtoChangeDetector} from './pregen_proto_change_detector';
3-
import {DynamicProtoChangeDetector} from './proto_change_detector';
41
import {IterableDiffers, IterableDifferFactory} from './differs/iterable_differs';
52
import {DefaultIterableDifferFactory} from './differs/default_iterable_differ';
63
import {KeyValueDiffers, KeyValueDifferFactory} from './differs/keyvalue_differs';
74
import {DefaultKeyValueDifferFactory} from './differs/default_keyvalue_differ';
8-
import {
9-
ChangeDetection,
10-
ProtoChangeDetector,
11-
ChangeDetectorDefinition,
12-
ChangeDetectorGenConfig
13-
} from './interfaces';
14-
import {Injector, Inject, Injectable, OpaqueToken, Optional, Binding} from 'angular2/src/core/di';
15-
import {StringMap, StringMapWrapper} from 'angular2/src/core/facade/collection';
16-
import {CONST, CONST_EXPR, isPresent, assertionsEnabled} from 'angular2/src/core/facade/lang';
5+
import {CONST, CONST_EXPR, isPresent} from 'angular2/src/core/facade/lang';
176

187
export {
198
ASTWithSource,
@@ -37,13 +26,13 @@ export {
3726
ProtoChangeDetector,
3827
ChangeDetector,
3928
ChangeDispatcher,
40-
ChangeDetection,
4129
ChangeDetectorDefinition,
4230
DebugContext,
4331
ChangeDetectorGenConfig
4432
} from './interfaces';
4533
export {ChangeDetectionStrategy, CHANGE_DECTION_STRATEGY_VALUES} from './constants';
4634
export {DynamicProtoChangeDetector} from './proto_change_detector';
35+
export {JitProtoChangeDetector} from './jit_proto_change_detector';
4736
export {BindingRecord, BindingTarget} from './binding_record';
4837
export {DirectiveIndex, DirectiveRecord} from './directive_record';
4938
export {DynamicChangeDetector} from './dynamic_change_detector';
@@ -68,98 +57,3 @@ export const iterableDiff: IterableDifferFactory[] =
6857
export const defaultIterableDiffers = CONST_EXPR(new IterableDiffers(iterableDiff));
6958

7059
export const defaultKeyValueDiffers = CONST_EXPR(new KeyValueDiffers(keyValDiff));
71-
72-
/**
73-
* Map from {@link ChangeDetectorDefinition#id} to a factory method which takes a
74-
* {@link Pipes} and a {@link ChangeDetectorDefinition} and generates a
75-
* {@link ProtoChangeDetector} associated with the definition.
76-
*/
77-
// TODO(kegluneq): Use PregenProtoChangeDetectorFactory rather than Function once possible in
78-
// dart2js. See https://github.com/dart-lang/sdk/issues/23630 for details.
79-
export var preGeneratedProtoDetectors: StringMap<string, Function> = {};
80-
81-
/**
82-
* Implements change detection using a map of pregenerated proto detectors.
83-
*/
84-
@Injectable()
85-
export class PreGeneratedChangeDetection extends ChangeDetection {
86-
_dynamicChangeDetection: ChangeDetection;
87-
_protoChangeDetectorFactories: StringMap<string, Function>;
88-
_genConfig: ChangeDetectorGenConfig;
89-
90-
constructor(config?: ChangeDetectorGenConfig,
91-
protoChangeDetectorsForTest?: StringMap<string, Function>) {
92-
super();
93-
this._dynamicChangeDetection = new DynamicChangeDetection();
94-
this._protoChangeDetectorFactories = isPresent(protoChangeDetectorsForTest) ?
95-
protoChangeDetectorsForTest :
96-
preGeneratedProtoDetectors;
97-
98-
this._genConfig =
99-
isPresent(config) ? config : new ChangeDetectorGenConfig(assertionsEnabled(),
100-
assertionsEnabled(), false, false);
101-
}
102-
103-
static isSupported(): boolean { return PregenProtoChangeDetector.isSupported(); }
104-
105-
getProtoChangeDetector(id: string, definition: ChangeDetectorDefinition): ProtoChangeDetector {
106-
if (StringMapWrapper.contains(this._protoChangeDetectorFactories, id)) {
107-
return StringMapWrapper.get(this._protoChangeDetectorFactories, id)(definition);
108-
}
109-
return this._dynamicChangeDetection.getProtoChangeDetector(id, definition);
110-
}
111-
112-
get genConfig(): ChangeDetectorGenConfig { return this._genConfig; }
113-
get generateDetectors(): boolean { return true; }
114-
}
115-
116-
117-
/**
118-
* Implements change detection that does not require `eval()`.
119-
*
120-
* This is slower than {@link JitChangeDetection}.
121-
*/
122-
@Injectable()
123-
export class DynamicChangeDetection extends ChangeDetection {
124-
_genConfig: ChangeDetectorGenConfig;
125-
126-
constructor(config?: ChangeDetectorGenConfig) {
127-
super();
128-
this._genConfig =
129-
isPresent(config) ? config : new ChangeDetectorGenConfig(assertionsEnabled(),
130-
assertionsEnabled(), false, false);
131-
}
132-
133-
getProtoChangeDetector(id: string, definition: ChangeDetectorDefinition): ProtoChangeDetector {
134-
return new DynamicProtoChangeDetector(definition);
135-
}
136-
137-
get genConfig(): ChangeDetectorGenConfig { return this._genConfig; }
138-
get generateDetectors(): boolean { return true; }
139-
}
140-
141-
/**
142-
* Implements faster change detection by generating source code.
143-
*
144-
* This requires `eval()`. For change detection that does not require `eval()`, see
145-
* {@link DynamicChangeDetection} and {@link PreGeneratedChangeDetection}.
146-
*/
147-
@Injectable()
148-
export class JitChangeDetection extends ChangeDetection {
149-
_genConfig: ChangeDetectorGenConfig;
150-
constructor(config?: ChangeDetectorGenConfig) {
151-
super();
152-
this._genConfig =
153-
isPresent(config) ? config : new ChangeDetectorGenConfig(assertionsEnabled(),
154-
assertionsEnabled(), false, true);
155-
}
156-
157-
static isSupported(): boolean { return JitProtoChangeDetector.isSupported(); }
158-
159-
getProtoChangeDetector(id: string, definition: ChangeDetectorDefinition): ProtoChangeDetector {
160-
return new JitProtoChangeDetector(definition);
161-
}
162-
163-
get genConfig(): ChangeDetectorGenConfig { return this._genConfig; }
164-
get generateDetectors(): boolean { return true; }
165-
}

modules/angular2/src/core/change_detection/interfaces.ts

Lines changed: 0 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,9 @@
1-
import {CONST} from 'angular2/src/core/facade/lang';
21
import {Locals} from './parser/locals';
32
import {BindingTarget, BindingRecord} from './binding_record';
43
import {DirectiveIndex, DirectiveRecord} from './directive_record';
54
import {ChangeDetectionStrategy} from './constants';
65
import {ChangeDetectorRef} from './change_detector_ref';
76

8-
/**
9-
* Interface used by Angular to control the change detection strategy for an application.
10-
*
11-
* Angular implements the following change detection strategies by default:
12-
*
13-
* - {@link DynamicChangeDetection}: slower, but does not require `eval()`.
14-
* - {@link JitChangeDetection}: faster, but requires `eval()`.
15-
*
16-
* In JavaScript, you should always use `JitChangeDetection`, unless you are in an environment that
17-
*has
18-
* [CSP](https://developer.mozilla.org/en-US/docs/Web/Security/CSP), such as a Chrome Extension.
19-
*
20-
* In Dart, use `DynamicChangeDetection` during development. The Angular transformer generates an
21-
*analog to the
22-
* `JitChangeDetection` strategy at compile time.
23-
*
24-
*
25-
* See: {@link DynamicChangeDetection}, {@link JitChangeDetection},
26-
* {@link PreGeneratedChangeDetection}
27-
*
28-
* # Example
29-
* ```javascript
30-
* bootstrap(MyApp, [bind(ChangeDetection).toValue(new DynamicChangeDetection())]);
31-
* ```
32-
*/
33-
@CONST()
34-
export class ChangeDetection {
35-
getProtoChangeDetector(id: string, definition: ChangeDetectorDefinition): ProtoChangeDetector {
36-
return null;
37-
}
38-
39-
get generateDetectors(): boolean { return null; }
40-
41-
get genConfig(): ChangeDetectorGenConfig { return null; }
42-
}
43-
447
export class DebugContext {
458
constructor(public element: any, public componentElement: any, public directive: any,
469
public context: any, public locals: any, public injector: any) {}

modules/angular2/src/core/compiler.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ export {
99
OnInit,
1010
DoCheck
1111
} from './compiler/interfaces';
12-
export {ComponentUrlMapper} from './compiler/component_url_mapper';
1312
export {DirectiveResolver} from './compiler/directive_resolver';
1413
export {Compiler} from './compiler/compiler';
1514
export {AppViewManager} from './compiler/view_manager';

modules/angular2/src/core/compiler/element_injector.ts

Lines changed: 7 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ import {
4848
import {QueryList} from './query_list';
4949
import {reflector} from 'angular2/src/core/reflection/reflection';
5050
import {SetterFn} from 'angular2/src/core/reflection/types';
51-
import {RenderDirectiveMetadata} from 'angular2/src/core/render/api';
5251
import {EventConfig} from 'angular2/src/core/render/event_config';
5352
import {PipeBinding} from '../pipes/pipe_binding';
5453

@@ -128,17 +127,17 @@ export class DirectiveDependency extends Dependency {
128127
}
129128

130129
export class DirectiveBinding extends ResolvedBinding {
131-
constructor(key: Key, factory: Function, deps: Dependency[],
132-
public metadata: RenderDirectiveMetadata,
130+
public callOnDestroy: boolean;
131+
132+
constructor(key: Key, factory: Function, deps: Dependency[], public metadata: DirectiveMetadata,
133133
public bindings: Array<Type | Binding | any[]>,
134134
public viewBindings: Array<Type | Binding | any[]>) {
135135
super(key, [new ResolvedFactory(factory, deps)], false);
136+
this.callOnDestroy = hasLifecycleHook(LifecycleHooks.OnDestroy, key.token);
136137
}
137138

138139
get displayName(): string { return this.key.displayName; }
139140

140-
get callOnDestroy(): boolean { return this.metadata.callOnDestroy; }
141-
142141
get queries(): QueryMetadataWithSetter[] {
143142
if (isBlank(this.metadata.queries)) return [];
144143

@@ -163,47 +162,11 @@ export class DirectiveBinding extends ResolvedBinding {
163162
var rb = resolveBinding(binding);
164163
var rf = rb.resolvedFactories[0];
165164
var deps = rf.dependencies.map(DirectiveDependency.createFrom);
166-
var token = binding.token;
167-
168-
var metadata = RenderDirectiveMetadata.create({
169-
id: stringify(binding.token),
170-
type: meta instanceof ComponentMetadata ? RenderDirectiveMetadata.COMPONENT_TYPE :
171-
RenderDirectiveMetadata.DIRECTIVE_TYPE,
172-
selector: meta.selector,
173-
compileChildren: true,
174-
outputs: meta.outputs,
175-
host: isPresent(meta.host) ? MapWrapper.createFromStringMap(meta.host) : null,
176-
inputs: meta.inputs,
177-
readAttributes: DirectiveBinding._readAttributes(<any>deps),
178-
queries: meta.queries,
179-
180-
callOnDestroy: hasLifecycleHook(LifecycleHooks.OnDestroy, token),
181-
callOnChanges: hasLifecycleHook(LifecycleHooks.OnChanges, token),
182-
callDoCheck: hasLifecycleHook(LifecycleHooks.DoCheck, token),
183-
callOnInit: hasLifecycleHook(LifecycleHooks.OnInit, token),
184-
callAfterContentInit: hasLifecycleHook(LifecycleHooks.AfterContentInit, token),
185-
callAfterContentChecked: hasLifecycleHook(LifecycleHooks.AfterContentChecked, token),
186-
callAfterViewInit: hasLifecycleHook(LifecycleHooks.AfterViewInit, token),
187-
callAfterViewChecked: hasLifecycleHook(LifecycleHooks.AfterViewChecked, token),
188-
189-
changeDetection: meta instanceof ComponentMetadata ? meta.changeDetection : null,
190-
191-
exportAs: meta.exportAs
192-
});
165+
193166
var bindings = isPresent(meta.bindings) ? meta.bindings : [];
194167
var viewBindigs =
195168
meta instanceof ComponentMetadata && isPresent(meta.viewBindings) ? meta.viewBindings : [];
196-
return new DirectiveBinding(rb.key, rf.factory, deps, metadata, bindings, viewBindigs);
197-
}
198-
199-
static _readAttributes(deps: DirectiveDependency[]): string[] {
200-
var readAttributes = [];
201-
deps.forEach(dep => {
202-
if (isPresent(dep.attributeName)) {
203-
readAttributes.push(dep.attributeName);
204-
}
205-
});
206-
return readAttributes;
169+
return new DirectiveBinding(rb.key, rf.factory, deps, meta, bindings, viewBindigs);
207170
}
208171

209172
static createFromType(type: Type, annotation: DirectiveMetadata): DirectiveBinding {
@@ -502,7 +465,7 @@ export class ElementInjector extends TreeNode<ElementInjector> implements Depend
502465
if (dirDep.key.id === StaticKeys.instance().changeDetectorRefId) {
503466
// We provide the component's view change detector to components and
504467
// the surrounding component's change detector to directives.
505-
if (dirBin.metadata.type === RenderDirectiveMetadata.COMPONENT_TYPE) {
468+
if (dirBin.metadata instanceof ComponentMetadata) {
506469
var componentView = this._preBuiltObjects.view.getNestedView(
507470
this._preBuiltObjects.elementRef.boundElementIndex);
508471
return componentView.changeDetector.ref;

0 commit comments

Comments
 (0)