Fixes bug where @JsExport'ed ctor that is never called from Java is not properly setup in defineClass() call.

Change-Id: I23235e6c5f5db1303d1c0b49040e1f7272a3fe4b
@JsExport("foo.bar.Baz") translates to
_ = provide("foo.bar")
_.Baz = ...

This leads to efficient code size, but does not allow advanced mode
compilation in Closure Compiler to rename consistently against
these exported symbols.

This patch adds a configuration variable,
js.export.closurestyle.fullyqualified

Which when true, causes a fully qualified assignment to be output:
_ = provide("foo.bar")
foo.bar.Baz = ...

Change-Id: I1e1cf0d862ff638bcda4bbeadf03dc89409b5b8f
Replace Annotation.getClass() w/ Annotation.annotationType()

Change-Id: I69f2dfefc3a2ffb532c2017c21b50fbcd608e119
Fixes Float.MAX_EXPONENT and Float.MIN_EXPONENT emulation

Bug: issue 8689
Change-Id: Id6066f4f975b256a676eb7202049963cdcc222e3
Remove echo from mvn command.

Change-Id: Ib43b92624a7eddb552312430bf5ce332c8ada670
Adds @SpecializeMethod internal compiler hint.

Allows compiler to tighten a method call into a specially written method based
on calling context.

Includes AbstractHashMap implementation.

Change-Id: Ie8f825bff12535c10542e029107a1aa8188ca69d
Note: Never to be used by end user apps, GWT SDK authors only.
Note: May be removed in future
Note: Does not currently implement covariant return matching on return type yet.
Catch Exception, not Throwable in SpecializationTest

Problem found by error-prone.

Change-Id: Iae04036d95b5a1aec78274782243cdb42ef79472
Added quiet (-q) flag to maven.

Change-Id: I84ba2ffd6849a9eb6f846d6220d6a91e3bfb8502
Adds more tests to StackTraceCreator and fixes few bugs

Change-Id: Ie4a7bcf64137bb0c3780edda5005d540c4e0ab7d
Suppress deprecation warnigs for in class JSNI references.

JSNI references to deprecated fields, methods and classes should not
emit a warning if they happen in the declaring class or an inner
class of the declaring class (this is the observed javac behaviour).

Change-Id: Ifd9c90df78a2c221a63c27c672a379b54d3b57b7
Fix that malformed parameter values break the app

  When reading parameters from URL, an exception in case of a malformed
  URI sequence, make the app fail.

  This happens for instance when initializing the GWT logger
  system which breaks when checking the existence of the 'logLevel'
  parameter in the URL.

  We can see this behaviour just adding the 'x=%E4' parameter to
  any GWT app which reads url parameters in the beginning.

Bug: issue 7741
Change-Id: I3f941e835f70c4caf9dd9caa0f14b63003001584
Catch Exception, not Throwable in SpecializationTest
Problem found by error-prone.

Exclude SpecializationTest during draft compile

Change-Id: I9a624db8d1726bf9e26fdd95c9abacbf18d48336
Force name assignemnt to methods targets of Impl.getNameOf().

Instance methods under some circumstances (StackMode=stripped) would
not be assigned a global name. If possible force a name on the targets
of Impl.getNameOf().

Under some circumstances assigning a name is not meaningful, e.g. an
abstract method. In those situations make sure a null is returned.

Change-Id: I662b9382598e03e1b3595b8d7d461748ed94087b
Types annotated with @JsExport, but which are not referenced by any
other Java code can be pruned by UnifyAst even though they are supposed
to be rescued by ControlFlowAnalysis later. This treats @JsExports just
like JSOs in the sense that they are considered root types during
UnifyAst stage, but analyzed more precisely in later compilation stages.

Over time, we will tighten these exports, by adding compile flags or
module configurations to switch or filter them off so you don't pick
them up unintentionally during transistive dependencies.

Change-Id: I7ab01e1de4aea2c4f8a573f5e55273d406f5e010
Makes Collector singleton and changes stack capability check

The earlier check turned out to be incorrect and returned false in
Chrome so I needed to change the check with something slightly costlier
(i.e. instantiate an Error object and check for 'stack' property).

To reduce the overhead of Collector creation, Collector also refactored
into a singleton.

Change-Id: Ib253610c19f38a5b09ea285aff807a57d9967657
Do not remove unused imports if unit has prior errors.

In this situation JDT will return an incomplete AST and
UnusedImportsRemover will (incorrectly) remove referred imports,
triggering the error reporting logic to report errors of the form
"<name> can not be resolved to a type" for the types whose imports
were removed.

Change-Id: I42642237b0df7e56b26041a729eff921d8bd2982
Fix typo in JProgram.

Change-Id: I68f9adb8b3ea4e286c05089af14ef6eed8ab1360
Make JsInliner avoid inlining pinned methods.

At the Java AST level some methods might be pinned (e.g. the ones
appearing in Impl.getNameOf()) and those should not be inlined
by the JsInliner.

Change-Id: I74ccf8cdc078b07109e029d77b84fff89a9cacae
Correctly process @SkipInterfaceValidation on RequestContext methods

Also adds @Retention(RUNTIME) to @ExtraTypes to allow for external,
reflection-based, Deobfuscator.Builder generators.

Change-Id: I346b2b7f5688b765f9b9968d3ef065db4a236915
Supports overrides with co-variant return types in RequestFactory, and
generics in proxies.

Generics in proxies can lead to overrides with co-variant return types
(e.g. if you override a method to set a @PropertyName on it), but also has
its own set of issues (type variables in getter's return type –used as the
property type– have to be "resolved" against the actual interface
parameterization).

Bug: issue 5926
Change-Id: Iba6384a93b866934c6e744643d79f9063e36bb2d