Some clean-up of how we handle unrecognized annotation
- add a flag extra_annotation_name
- tie unknown annotation warnings to --warning_level rather
than --compilation_level
- add annotations from jsdoc3 to the default set.
fixes issue 901

R=blickly
DELTA=77 (63 added, 12 deleted, 2 changed)


Revision created by MOE tool push_codebase.
MOE_MIGRATION=6185


git-svn-id: http://closure-compiler.googlecode.com/svn/trunk@2485 b0f006be-c8cd-11de-a2e8-8d36a3108c74
Renames ParameterizedType to TemplatizedType.

R=dimvar,nicksantos,johnlenz


Revision created by MOE tool push_codebase.
MOE_MIGRATION=6186


git-svn-id: http://closure-compiler.googlecode.com/svn/trunk@2486 b0f006be-c8cd-11de-a2e8-8d36a3108c74
This CL adds a new AngularPass

When enabled this flag triggers compiler to process a special
@angularInject annotation.

When a function declaration is annotated with @angularInject,
AngularPass compiler pass will extract function parameter names,
combine them into an array of strings and create a special
`$inject` property on the declared function containing the array.

For example,

/** @angularInject */
function Something(a, b) {}

will be transformed into
function Something(a, b) {}
Something.$inject = ['a', 'b'];

This would take of the burden of maintaining dependency declarations
for Angular Dependency Injector from developers resulting in cleaner
code while still supporting code minification.

This CL adds AngularPass.java (and corresponding test file) containing
AST traversal, node extraction and node creation logic.

First, AngularPass.Traversal class is used to traverse AST, locate
nodes annotated with @angularInject, determine their type, locate the
FUNCTION node, and decide which node the new ".$inject = [...]" ASSIGN
node should be attached to.

Second, all discovered eligible nodes are iterated through, function
parameters extracted and corresponding ".$inject = [param...]" node
created and attached to the AST.

R=blickly
DELTA=579 (575 added, 1 deleted, 3 changed)


Revision created by MOE tool push_codebase.
MOE_MIGRATION=6187


git-svn-id: http://closure-compiler.googlecode.com/svn/trunk@2487 b0f006be-c8cd-11de-a2e8-8d36a3108c74
Renaming @angularInject to @ngInject per request from AngularJS devs.

R=johnlenz,nicksantos
DELTA=65 (0 added, 0 deleted, 65 changed)


Revision created by MOE tool push_codebase.
MOE_MIGRATION=6188


git-svn-id: http://closure-compiler.googlecode.com/svn/trunk@2488 b0f006be-c8cd-11de-a2e8-8d36a3108c74
allow type casts in property tests

R=johnlenz


Revision created by MOE tool push_codebase.
MOE_MIGRATION=6189


git-svn-id: http://closure-compiler.googlecode.com/svn/trunk@2489 b0f006be-c8cd-11de-a2e8-8d36a3108c74