diff --git a/.travis.yml b/.travis.yml index cdb0129741..6725fc9f5e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,6 +19,7 @@ before_script: - npm install -g bower gulp-cli@1 - bower install - gulp lint +- gulp lint-closure script: - xvfb-run wct - if [ "${TRAVIS_PULL_REQUEST}" = "false" ]; then wct -s 'windows 10/microsoftedge@14' -s 'windows 8.1/internet explorer@11' -s 'os x 10.11/safari@9' -s 'macos 10.12/safari@10' -s 'Linux/chrome@41'; fi diff --git a/closure.log b/closure.log new file mode 100644 index 0000000000..6b8a8c2839 --- /dev/null +++ b/closure.log @@ -0,0 +1,2279 @@ +gulp-google-closure-compiler: /polymer.html_script_0.js:20: WARNING - Returned type does not match declared return type. +Expected : Object|null +Found : undefined + + return window.Polymer._polymerFn(info); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_10.js:144: WARNING - Property name never defined on trigger of type Object + let triggerPath = trigger.name; + ^^^^^^^^^^^^ + +/polymer.html_script_10.js:168: WARNING - Property property never defined on info of type {methodName:?} + let changedProp = info.property; + ^^^^^^^^^^^^^ + +/polymer.html_script_10.js:170: WARNING - Property __data never defined on inst of type Object + fn.call(inst, inst.__data[changedProp], oldProps[changedProp]); + ^^^^^^^^^^^ + +/polymer.html_script_10.js:195: WARNING - Property __notifyEffects never defined on inst of type Element + let fxs = inst.__notifyEffects; + ^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_10.js:225: WARNING - Missing return statement. Function expected to return boolean. + function notifyPath(inst, path, props) { + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_10.js:273: WARNING - Property __data never defined on inst of type Element + let value = path ? Polymer.Path.get(inst, path) : inst.__data[property]; + ^^^^^^^^^^^ + +/polymer.html_script_10.js:298: WARNING - Property detail never defined on event of type Event + let detail = event.detail; + ^^^^^^^^^^^^ + +/polymer.html_script_10.js:308: WARNING - Property _setPendingPropertyOrPath never defined on inst of type Object + if (inst._setPendingPropertyOrPath(toPath, value, true, Boolean(fromPath)) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_10.js:310: WARNING - Property _invalidateProperties never defined on inst of type Object + inst._invalidateProperties(); + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_10.js:330: WARNING - Property sanitizeDOMValue never defined on Polymer of type Polymer<|function({is:string}):HTMLElement|>{prototype:?} + value = Polymer.sanitizeDOMValue(value, info.attrName, 'attribute', inst); + ^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_10.js:332: WARNING - Property _propertyToAttribute never defined on inst of type {__data:Object} + inst._propertyToAttribute(property, info.attrName, value); + ^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_10.js:352: WARNING - Property __computeEffects never defined on inst of type Element + let computeEffects = inst.__computeEffects; + ^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_10.js:356: WARNING - Invalid type for parameter 1 of function Object.assign. +Expected : Object +Found : Object|null +More details: +The found type is a union that includes an unexpected type: null + Object.assign(oldProps, inst.__dataOld); + ^^^^^^^^ + +/polymer.html_script_10.js:356: WARNING - Property __dataOld never defined on inst of type Element + Object.assign(oldProps, inst.__dataOld); + ^^^^^^^^^^^^^^ + +/polymer.html_script_10.js:357: WARNING - Invalid type for parameter 1 of function Object.assign. +Expected : Object +Found : Object|null +More details: +The found type is a union that includes an unexpected type: null + Object.assign(changedProps, inst.__dataPending); + ^^^^^^^^^^^^ + +/polymer.html_script_10.js:444: WARNING - Property negate never defined on $jscomp$destructuring$var0 of type {event:?} + let {event, negate} = binding.parts[0]; + ^^^^^^ + +/polymer.html_script_10.js:470: WARNING - Property target never defined on binding of type {kind:string} + if (binding.kind === 'attribute' && binding.target[0] === '-') { + ^^^^^^^^^^^^^^ + +/polymer.html_script_10.js:471: WARNING - Property target never defined on binding of type {kind:string} + console.warn('Cannot set attribute ' + binding.target + + ^^^^^^^^^^^^^^ + +/polymer.html_script_10.js:474: WARNING - Property dependencies never defined on part of type Object + let dependencies = part.dependencies; + ^^^^^^^^^^^^^^^^^ + +/polymer.html_script_10.js:512: WARNING - Property binding never defined on info of type {index:number} + let binding = info.binding; + ^^^^^^^^^^^^ + +/polymer.html_script_10.js:513: WARNING - Property part never defined on info of type {index:number} + let part = info.part; + ^^^^^^^^^ + +/polymer.html_script_10.js:522: WARNING - Property _enqueueClient never defined on inst of type Element + inst._enqueueClient(node); + ^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_10.js:525: WARNING - Property evaluator never defined on info of type {index:number} + let value = info.evaluator._evaluateBinding(inst, part, path, props, oldProps, hasPaths); + ^^^^^^^^^^^^^^ + +/polymer.html_script_10.js:545: WARNING - Property sanitizeDOMValue never defined on Polymer of type Polymer<|function({is:string}):HTMLElement|>{prototype:?} + value = Polymer.sanitizeDOMValue(value, binding.target, binding.kind, node); + ^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_10.js:545: WARNING - Property kind never defined on binding of type {target:?} + value = Polymer.sanitizeDOMValue(value, binding.target, binding.kind, node); + ^^^^^^^^^^^^ + +/polymer.html_script_10.js:549: WARNING - Property target never defined on binding of type {kind:?} + inst._valueToNodeAttribute(node, value, binding.target); + ^^^^^^^^^^^^^^ + +/polymer.html_script_10.js:552: WARNING - Property target never defined on binding of type {kind:?} + let prop = binding.target; + ^^^^^^^^^^^^^^ + +/polymer.html_script_10.js:582: WARNING - Property kind never defined on binding of type Object + if (binding.kind !== 'attribute') { + ^^^^^^^^^^^^ + +/polymer.html_script_10.js:584: WARNING - Property target never defined on binding of type Object + if (binding.target === 'textContent' || + ^^^^^^^^^^^^^^ + +/polymer.html_script_10.js:585: WARNING - Property target never defined on binding of type Object + (node.localName == 'input' && binding.target == 'value')) { + ^^^^^^^^^^^^^^ + +/polymer.html_script_10.js:623: WARNING - Property nodeInfoList never defined on $jscomp$destructuring$var1 of type {nodeList:?} + let {nodeList, nodeInfoList} = templateInfo; + ^^^^^^^^^^^^ + +/polymer.html_script_10.js:710: WARNING - Property methodName never defined on sig of type Object + let dynamicFn = sig.static || dynamicFns && dynamicFns[sig.methodName]; + ^^^^^^^^^^^^^^ + +/polymer.html_script_10.js:712: WARNING - Property methodName never defined on sig of type Object + methodName: sig.methodName, + ^^^^^^^^^^^^^^ + +/polymer.html_script_10.js:713: WARNING - Property args never defined on sig of type Object + args: sig.args, + ^^^^^^^^ + +/polymer.html_script_10.js:717: WARNING - Property args never defined on sig of type Object + for (let i=0, arg; (i=, nodeList:?, wasPreBound:truthy=} + runEffects(this, templateInfo.propertyEffects, this.__data, null, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_10.js:2109: WARNING - Property templateInfo never defined on dom of type DocumentFragment + let templateInfo = dom.templateInfo; + ^^^^^^^^^^^^^^^^ + +/polymer.html_script_10.js:2143: WARNING - Property _parseTemplateNode never defined on propertyEffectsBase of type propertyEffectsBase<|function(new:propertyEffectsBase):?|> + let noted = super._parseTemplateNode(node, templateInfo, nodeInfo); + ^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_10.js:2151: WARNING - Function addBinding: called with 6 argument(s). Function requires at least 7 argument(s) and at most 7. + addBinding(this, templateInfo, nodeInfo, 'text', 'textContent', parts); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_10.js:2187: WARNING - Property setAttribute never defined on node of type Node + node.setAttribute(name, literal); + ^^^^^^^^^^^^^^^^^ + +/polymer.html_script_10.js:2194: WARNING - Property setAttribute never defined on node of type Node + node.setAttribute(origName, ''); + ^^^^^^^^^^^^^^^^^ + +/polymer.html_script_10.js:2197: WARNING - Property removeAttribute never defined on node of type Node + node.removeAttribute(origName); + ^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_10.js:2208: WARNING - Property _parseTemplateNodeAttribute never defined on propertyEffectsBase of type propertyEffectsBase<|function(new:propertyEffectsBase):?|> + return super._parseTemplateNodeAttribute(node, templateInfo, nodeInfo, name, value); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_10.js:2226: WARNING - Property _parseTemplateNestedTemplate never defined on propertyEffectsBase of type propertyEffectsBase<|function(new:propertyEffectsBase):?|> + let noted = super._parseTemplateNestedTemplate(node, templateInfo, nodeInfo); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_10.js:2232: WARNING - Function addBinding: called with 6 argument(s). Function requires at least 7 argument(s) and at most 7. + addBinding(this, templateInfo, nodeInfo, 'property', '_host_' + source, parts); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_10.js:2270: WARNING - Missing return statement. Function expected to return Array|null. + static _parseBindings(text, templateInfo) { + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_10.js:2299: WARNING - Property args never defined on $jscomp$destructuring$var2 of type Object + let {args, methodName} = signature; + ^^^^ + +/polymer.html_script_10.js:2299: WARNING - Property methodName never defined on $jscomp$destructuring$var2 of type Object + let {args, methodName} = signature; + ^^^^^^^^^^ + +/polymer.html_script_10.js:2352: WARNING - Property source never defined on part of type Object + } else if (path != part.source) { + ^^^^^^^^^^^ + +/polymer.html_script_10.js:2353: WARNING - Property source never defined on part of type Object + value = Polymer.Path.get(inst, part.source); + ^^^^^^^^^^^ + +/polymer.html_script_10.js:2358: WARNING - Property __data never defined on inst of type HTMLElement + value = inst.__data[path]; + ^^^^^^^^^^^ + +/polymer.html_script_11.js:105: WARNING - polymerElementBase extends non-object type ?. + + const polymerElementBase = Polymer.PropertyEffects(base); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_11.js:126: WARNING - Property properties never defined on klass of type HTMLElement + klass.properties : {}; + ^^^^^^^^^^^^^^^^ + +/polymer.html_script_11.js:144: WARNING - Property observers never defined on klass of type HTMLElement + klass.observers : []; + ^^^^^^^^^^^^^^^ + +/polymer.html_script_11.js:155: WARNING - Type annotation references non-existent type Objecg. + * @return {Objecg} The input `flattenedProps` bag + ^^^^^^ + +/polymer.html_script_11.js:184: WARNING - Property prototype never defined on klass of type HTMLElement{__classProperties:?} + let superCtor = Object.getPrototypeOf(klass.prototype).constructor; + ^^^^^^^^^^^^^^^ + +/polymer.html_script_11.js:187: WARNING - Invalid type for parameter 1 of function propertiesForClass. +Expected : HTMLElement|null +Found : Function + + Object.create(propertiesForClass(superCtor)), + ^^^^^^^^^ + +/polymer.html_script_11.js:241: WARNING - Property prototype never defined on klass of type HTMLElement + let proto = klass.prototype; + ^^^^^^^^^^^^^^^ + +/polymer.html_script_11.js:260: WARNING - Property prototype never defined on klass of type HTMLElement{__finalized:boolean} + let proto = klass.prototype; + ^^^^^^^^^^^^^^^ + +/polymer.html_script_11.js:274: WARNING - Property template never defined on klass of type HTMLElement{__finalized:boolean, is:truthy=} + let template = klass.template; + ^^^^^^^^^^^^^^ + +/polymer.html_script_11.js:318: WARNING - Property _createMethodObserver never defined on proto of type HTMLElement + proto._createMethodObserver(observers[i], dynamicFns); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_11.js:390: WARNING - Property _hasReadOnlyEffect never defined on proto of type HTMLElement + if (info.computed && !proto._hasReadOnlyEffect(name)) { + ^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_11.js:391: WARNING - Property _createComputedProperty never defined on proto of type HTMLElement + proto._createComputedProperty(name, info.computed, allProps); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_11.js:393: WARNING - Property _hasReadOnlyEffect never defined on proto of type HTMLElement + if (info.readOnly && !proto._hasReadOnlyEffect(name)) { + ^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_11.js:394: WARNING - Property _createReadOnlyProperty never defined on proto of type HTMLElement + proto._createReadOnlyProperty(name, !info.computed); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_11.js:396: WARNING - Property _hasReflectEffect never defined on proto of type HTMLElement + if (info.reflectToAttribute && !proto._hasReflectEffect(name)) { + ^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_11.js:397: WARNING - Property _createReflectedProperty never defined on proto of type HTMLElement + proto._createReflectedProperty(name); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_11.js:399: WARNING - Property _hasNotifyEffect never defined on proto of type HTMLElement + if (info.notify && !proto._hasNotifyEffect(name)) { + ^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_11.js:400: WARNING - Property _createNotifyingProperty never defined on proto of type HTMLElement + proto._createNotifyingProperty(name); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_11.js:404: WARNING - Property _createPropertyObserver never defined on proto of type HTMLElement + proto._createPropertyObserver(name, info.observer, allProps[info.observer]); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_11.js:433: WARNING - Invalid type for parameter 1 of function window.ShadyCSS.prepareTemplate. +Expected : HTMLTemplateElement +Found : HTMLTemplateElement|null +More details: +The found type is a union that includes an unexpected type: null + window.ShadyCSS.prepareTemplate(template, is, ext); + ^^^^^^^^ + +/polymer.html_script_11.js:435: WARNING - Property _bindTemplate never defined on proto of type HTMLElement + proto._bindTemplate(template); + ^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_11.js:458: WARNING - Invalid type for parameter 1 of function propertiesForClass. +Expected : HTMLElement|null +Found : PolymerElement + + let properties = propertiesForClass(this); + ^^^^ + +/polymer.html_script_11.js:524: WARNING - Property is never defined on this of type PolymerElement + this._template = Polymer.DomModule.import(this.is, 'template') || + ^^^^^^^ + +/polymer.html_script_11.js:528: WARNING - Property prototype never defined on this of type PolymerElement + Object.getPrototypeOf(this.prototype).constructor.template; + ^^^^^^^^^^^^^^ + +/polymer.html_script_11.js:546: WARNING - Property is never defined on this of type PolymerElement + const module = Polymer.DomModule.import(this.is); + ^^^^^^^ + +/polymer.html_script_11.js:548: WARNING - Property prototype never defined on this of type PolymerElement + Object.getPrototypeOf(this.prototype).constructor.importPath; + ^^^^^^^^^^^^^^ + +/polymer.html_script_11.js:573: WARNING - Function Polymer.ResolveUrl.resolveUrl: called with 1 argument(s). Function requires at least 2 argument(s) and at most 2. + importPath ? Polymer.ResolveUrl.resolveUrl(importPath) : ''; + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_11.js:574: WARNING - Invalid type for parameter 1 of function finalizeTemplate. +Expected : HTMLElement|null +Found : Object|null +More details: +The found type is a union that includes an unexpected type: Object + finalizeTemplate(this.__proto__, this._template, baseURI, + ^^^^^^^^^^^^^^ + +/polymer.html_script_11.js:575: WARNING - Property localName never defined on this of type PolymerElement{_template:HTMLTemplateElement{__polymerFinalized:boolean}, constructor:Function} + this.localName); + ^^^^^^^^^^^^^^ + +/polymer.html_script_11.js:582: WARNING - Invalid type for parameter 1 of function propertyDefaultsForClass. +Expected : HTMLElement|null +Found : Function + + let p$ = propertyDefaultsForClass(this.constructor); + ^^^^^^^^^^^^^^^^ + +/polymer.html_script_11.js:618: WARNING - Invalid type for parameter 1 of function window.ShadyCSS.styleElement. +Expected : HTMLElement +Found : PolymerElement{_template:truthy} + + window.ShadyCSS.styleElement(this); + ^^^^ + +/polymer.html_script_11.js:643: WARNING - Property $ never defined on this.root of type DocumentFragment + this.$ = this.root.$; + ^^^^^^^^^^^ + +/polymer.html_script_11.js:676: WARNING - Missing return statement. Function expected to return Node|null. + _attachDom(dom) { + ^^^^^^^^^^^^^^^^^ + +/polymer.html_script_11.js:719: WARNING - Invalid type for parameter 1 of function propertiesForClass. +Expected : HTMLElement|null +Found : Function|null +More details: +The found type is a union that includes an unexpected type: Function + let type = propertiesForClass(this.constructor)[property].type; + ^^^^^^^^^^^^^^^^ + +/polymer.html_script_11.js:721: WARNING - Invalid type for parameter 1 of function this._attributeToProperty. +Expected : string +Found : * + + this._attributeToProperty(name, value, type); + ^^^^ + +/polymer.html_script_11.js:721: WARNING - Invalid type for parameter 2 of function this._attributeToProperty. +Expected : string +Found : * + + this._attributeToProperty(name, value, type); + ^^^^^ + +/polymer.html_script_11.js:744: WARNING - Invalid type for parameter 1 of function window.ShadyCSS.styleSubtree. +Expected : HTMLElement +Found : PolymerElement + + window.ShadyCSS.styleSubtree(this, properties); + ^^^^ + +/polymer.html_script_11.js:761: WARNING - Function Polymer.ResolveUrl.resolveUrl: called with 1 argument(s). Function requires at least 2 argument(s) and at most 2. + base = Polymer.ResolveUrl.resolveUrl(this.importPath); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_11.js:776: WARNING - Property _parseTemplateContent never defined on polymerElementBase of type polymerElementBase<|function(new:polymerElementBase):?|> + return super._parseTemplateContent(template, templateInfo, nodeInfo); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_11.js:812: WARNING - Dangerous use of the global THIS object + if (this.stack.length) { + ^^^^ + +/polymer.html_script_11.js:813: WARNING - Dangerous use of the global THIS object + let host = this.stack[this.stack.length-1]; + ^^^^ + +/polymer.html_script_11.js:813: WARNING - Dangerous use of the global THIS object + let host = this.stack[this.stack.length-1]; + ^^^^ + +/polymer.html_script_11.js:819: WARNING - Dangerous use of the global THIS object + this.stack.push(inst); + ^^^^ + +/polymer.html_script_11.js:823: WARNING - Dangerous use of the global THIS object + let stackLen = this.stack.length; + ^^^^ + +/polymer.html_script_11.js:824: WARNING - Dangerous use of the global THIS object + if (stackLen && this.stack[stackLen-1] == inst) { + ^^^^ + +/polymer.html_script_11.js:825: WARNING - Dangerous use of the global THIS object + this.stack.pop(); + ^^^^ + +/polymer.html_script_11.js:847: WARNING - Type annotation references non-existent type Polymer.Element. + * @type {Array} + ^^^^^^^^^^^^^^^ + +/polymer.html_script_11.js:855: WARNING - Property is never defined on prototype of type HTMLElement + console.log('[' + prototype.is + ']: registered') + ^^^^^^^^^^^^ + +/polymer.html_script_11.js:863: WARNING - Dangerous use of the global THIS object + this.registrations.push(prototype); + ^^^^ + +/polymer.html_script_11.js:864: WARNING - Dangerous use of the global THIS object + Polymer.log && this._regLog(prototype); + ^^^^ + +/polymer.html_script_11.js:871: WARNING - Dangerous use of the global THIS object + this.registrations.forEach(this._regLog); + ^^^^ + +/polymer.html_script_11.js:871: WARNING - Dangerous use of the global THIS object + this.registrations.forEach(this._regLog); + ^^^^ + +/polymer.html_script_12.js:60: WARNING - Type annotation references non-existent type Polymer.Debouncer. + * @param {Polymer.Debouncer?} debouncer Debouncer object. + ^^^^^^^^^^^^^^^^^ + +/polymer.html_script_13.js:246: WARNING - Returned type does not match declared return type. +Expected : HTMLElement|null +Found : Element|null +More details: +The found type is a union that includes an unexpected type: Element + return node; + ^^^^^^^^^^^^ + +/polymer.html_script_13.js:258: WARNING - Returned type does not match declared return type. +Expected : HTMLElement|null +Found : Document|Element|ShadowRoot|Window +More details: +The found type is a union that includes an unexpected type: Window + return ev.composedPath()[0]; + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_13.js:261: WARNING - Returned type does not match declared return type. +Expected : HTMLElement|null +Found : EventTarget|null +More details: +The found type is a union that includes an unexpected type: EventTarget + return ev.target; + ^^^^^^^^^^^^^^^^^ + +/polymer.html_script_13.js:283: WARNING - Property changedTouches never defined on ev of type Event + let t = ev.changedTouches[0]; + ^^^^^^^^^^^^^^^^^ + +/polymer.html_script_13.js:286: WARNING - Property touches never defined on ev of type Event + if (ev.touches.length === 1) { + ^^^^^^^^^^ + +/polymer.html_script_13.js:330: WARNING - Property changedTouches never defined on ev of type Event + let t = ev.changedTouches[0]; + ^^^^^^^^^^^^^^^^^ + +/polymer.html_script_13.js:371: WARNING - Missing return statement. Function expected to return boolean. + addListener: function(node, evType, handler) { + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_13.js:372: WARNING - Dangerous use of the global THIS object + if (this.gestures[evType]) { + ^^^^ + +/polymer.html_script_13.js:373: WARNING - Dangerous use of the global THIS object + this._add(node, evType, handler); + ^^^^ + +/polymer.html_script_13.js:388: WARNING - Missing return statement. Function expected to return boolean. + removeListener: function(node, evType, handler) { + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_13.js:389: WARNING - Dangerous use of the global THIS object + if (this.gestures[evType]) { + ^^^^ + +/polymer.html_script_13.js:390: WARNING - Dangerous use of the global THIS object + this._remove(node, evType, handler); + ^^^^ + +/polymer.html_script_13.js:401: WARNING - Bad type annotation. missing opening ( See https://github.com/google/closure-compiler/wiki/Bad-Type-Annotation for more information. + * @param {function} handler Event handler function. + ^ + +/polymer.html_script_13.js:404: WARNING - Dangerous use of the global THIS object + let recognizer = this.gestures[evType]; + ^^^^ + +/polymer.html_script_13.js:422: WARNING - Dangerous use of the global THIS object + node.addEventListener(dep, this._handleNative); + ^^^^ + +/polymer.html_script_13.js:429: WARNING - Dangerous use of the global THIS object + this.setTouchAction(node, recognizer.touchAction); + ^^^^ + +/polymer.html_script_13.js:439: WARNING - Bad type annotation. missing opening ( See https://github.com/google/closure-compiler/wiki/Bad-Type-Annotation for more information. + * @param {function} handler Event handler function. + ^ + +/polymer.html_script_13.js:442: WARNING - Dangerous use of the global THIS object + let recognizer = this.gestures[evType]; + ^^^^ + +/polymer.html_script_13.js:454: WARNING - Dangerous use of the global THIS object + node.removeEventListener(dep, this._handleNative); + ^^^^ + +/polymer.html_script_13.js:470: WARNING - Dangerous use of the global THIS object + this.recognizers.push(recog); + ^^^^ + +/polymer.html_script_13.js:472: WARNING - Dangerous use of the global THIS object + this.gestures[recog.emits[i]] = recog; + ^^^^ + +/polymer.html_script_13.js:482: WARNING - Dangerous use of the global THIS object + for (let i = 0, r; i < this.recognizers.length; i++) { + ^^^^ + +/polymer.html_script_13.js:483: WARNING - Dangerous use of the global THIS object + r = this.recognizers[i]; + ^^^^ + +/polymer.html_script_13.js:506: WARNING - Property style never defined on node of type Node + node.style.touchAction = value; + ^^^^^^^^^^ + +/polymer.html_script_13.js:539: WARNING - Dangerous use of the global THIS object + let recognizer = this._findRecognizerByEvent(evName); + ^^^^ + +/polymer.html_script_13.js:576: WARNING - Dangerous use of the global THIS object + untrackDocument(this.info); + ^^^^ + +/polymer.html_script_13.js:597: WARNING - Dangerous use of the global THIS object + trackDocument(this.info, movefn, upfn); + ^^^^ + +/polymer.html_script_13.js:598: WARNING - Dangerous use of the global THIS object + this._fire('down', t, e); + ^^^^ + +/polymer.html_script_13.js:601: WARNING - Dangerous use of the global THIS object + this._fire('down', Gestures._findOriginalTarget(e), e.changedTouches[0], e); + ^^^^ + +/polymer.html_script_13.js:604: WARNING - Dangerous use of the global THIS object + this._fire('up', Gestures._findOriginalTarget(e), e.changedTouches[0], e); + ^^^^ + +/polymer.html_script_13.js:636: WARNING - Dangerous use of the global THIS object + if (this.moves.length > TRACK_LENGTH) { + ^^^^ + +/polymer.html_script_13.js:637: WARNING - Dangerous use of the global THIS object + this.moves.shift(); + ^^^^ + +/polymer.html_script_13.js:639: WARNING - Dangerous use of the global THIS object + this.moves.push(move); + ^^^^ + +/polymer.html_script_13.js:647: WARNING - Dangerous use of the global THIS object + this.info.state = 'start'; + ^^^^ + +/polymer.html_script_13.js:648: WARNING - Dangerous use of the global THIS object + this.info.started = false; + ^^^^ + +/polymer.html_script_13.js:649: WARNING - Dangerous use of the global THIS object + this.info.moves = []; + ^^^^ + +/polymer.html_script_13.js:650: WARNING - Dangerous use of the global THIS object + this.info.x = 0; + ^^^^ + +/polymer.html_script_13.js:651: WARNING - Dangerous use of the global THIS object + this.info.y = 0; + ^^^^ + +/polymer.html_script_13.js:652: WARNING - Dangerous use of the global THIS object + this.info.prevent = false; + ^^^^ + +/polymer.html_script_13.js:653: WARNING - Dangerous use of the global THIS object + untrackDocument(this.info); + ^^^^ + +/polymer.html_script_13.js:657: WARNING - Dangerous use of the global THIS object + if (this.info.prevent) { + ^^^^ + +/polymer.html_script_13.js:660: WARNING - Dangerous use of the global THIS object + if (this.info.started) { + ^^^^ + +/polymer.html_script_13.js:663: WARNING - Dangerous use of the global THIS object + let dx = Math.abs(this.info.x - x); + ^^^^ + +/polymer.html_script_13.js:664: WARNING - Dangerous use of the global THIS object + let dy = Math.abs(this.info.y - y); + ^^^^ + +/polymer.html_script_13.js:702: WARNING - Dangerous use of the global THIS object + trackDocument(this.info, movefn, upfn); + ^^^^ + +/polymer.html_script_13.js:703: WARNING - Dangerous use of the global THIS object + this.info.x = e.clientX; + ^^^^ + +/polymer.html_script_13.js:704: WARNING - Dangerous use of the global THIS object + this.info.y = e.clientY; + ^^^^ + +/polymer.html_script_13.js:709: WARNING - Dangerous use of the global THIS object + this.info.x = ct.clientX; + ^^^^ + +/polymer.html_script_13.js:710: WARNING - Dangerous use of the global THIS object + this.info.y = ct.clientY; + ^^^^ + +/polymer.html_script_13.js:717: WARNING - Dangerous use of the global THIS object + if (this.hasMovedEnough(x, y)) { + ^^^^ + +/polymer.html_script_13.js:718: WARNING - Dangerous use of the global THIS object + if (this.info.state === 'start') { + ^^^^ + +/polymer.html_script_13.js:722: WARNING - Dangerous use of the global THIS object + this.info.addMove({x: x, y: y}); + ^^^^ + +/polymer.html_script_13.js:723: WARNING - Dangerous use of the global THIS object + this._fire(t, ct); + ^^^^ + +/polymer.html_script_13.js:724: WARNING - Dangerous use of the global THIS object + this.info.state = 'track'; + ^^^^ + +/polymer.html_script_13.js:725: WARNING - Dangerous use of the global THIS object + this.info.started = true; + ^^^^ + +/polymer.html_script_13.js:733: WARNING - Dangerous use of the global THIS object + if (this.info.started) { + ^^^^ + +/polymer.html_script_13.js:735: WARNING - Dangerous use of the global THIS object + this.info.state = 'end'; + ^^^^ + +/polymer.html_script_13.js:736: WARNING - Dangerous use of the global THIS object + this.info.addMove({x: ct.clientX, y: ct.clientY}); + ^^^^ + +/polymer.html_script_13.js:737: WARNING - Dangerous use of the global THIS object + this._fire(t, ct, e); + ^^^^ + +/polymer.html_script_13.js:742: WARNING - Dangerous use of the global THIS object + let secondlast = this.info.moves[this.info.moves.length - 2]; + ^^^^ + +/polymer.html_script_13.js:742: WARNING - Dangerous use of the global THIS object + let secondlast = this.info.moves[this.info.moves.length - 2]; + ^^^^ + +/polymer.html_script_13.js:743: WARNING - Dangerous use of the global THIS object + let lastmove = this.info.moves[this.info.moves.length - 1]; + ^^^^ + +/polymer.html_script_13.js:743: WARNING - Dangerous use of the global THIS object + let lastmove = this.info.moves[this.info.moves.length - 1]; + ^^^^ + +/polymer.html_script_13.js:744: WARNING - Dangerous use of the global THIS object + let dx = lastmove.x - this.info.x; + ^^^^ + +/polymer.html_script_13.js:745: WARNING - Dangerous use of the global THIS object + let dy = lastmove.y - this.info.y; + ^^^^ + +/polymer.html_script_13.js:752: WARNING - Dangerous use of the global THIS object + state: this.info.state, + ^^^^ + +/polymer.html_script_13.js:782: WARNING - Dangerous use of the global THIS object + this.info.x = NaN; + ^^^^ + +/polymer.html_script_13.js:783: WARNING - Dangerous use of the global THIS object + this.info.y = NaN; + ^^^^ + +/polymer.html_script_13.js:784: WARNING - Dangerous use of the global THIS object + this.info.prevent = false; + ^^^^ + +/polymer.html_script_13.js:787: WARNING - Dangerous use of the global THIS object + this.info.x = e.clientX; + ^^^^ + +/polymer.html_script_13.js:788: WARNING - Dangerous use of the global THIS object + this.info.y = e.clientY; + ^^^^ + +/polymer.html_script_13.js:793: WARNING - Dangerous use of the global THIS object + this.save(e); + ^^^^ + +/polymer.html_script_13.js:798: WARNING - Dangerous use of the global THIS object + this.forward(e); + ^^^^ + +/polymer.html_script_13.js:803: WARNING - Dangerous use of the global THIS object + this.save(e.changedTouches[0], e); + ^^^^ + +/polymer.html_script_13.js:806: WARNING - Dangerous use of the global THIS object + this.forward(e.changedTouches[0], e); + ^^^^ + +/polymer.html_script_13.js:810: WARNING - Dangerous use of the global THIS object + let dx = Math.abs(e.clientX - this.info.x); + ^^^^ + +/polymer.html_script_13.js:811: WARNING - Dangerous use of the global THIS object + let dy = Math.abs(e.clientY - this.info.y); + ^^^^ + +/polymer.html_script_13.js:816: WARNING - Dangerous use of the global THIS object + if (!this.info.prevent) { + ^^^^ + +/polymer.html_script_14.js:6: WARNING - All constants must be typed. The compiler could not infer the type of constant gestures. Please use an explicit type annotation. For more information, see: +https://github.com/google/closure-compiler/wiki/Using-NTI-(new-type-inference)#warnings-about-uninferred-constants + const gestures = Polymer.Gestures; + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_14.js:28: WARNING - GestureEventListeners extends non-object type ?. + + class GestureEventListeners extends superClass { + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_15.js:91: WARNING - Returned type does not match declared return type. +Expected : HTMLLinkElement|null +Found : Element{__dynamicImportLoaded:truthy=, href:string=, parentNode:Node|null, rel:string=} + + return link; + ^^^^^^^^^^^^ + +/polymer.html_script_18.js:51: WARNING - Dangerous use of the global THIS object + if (this.equals(current[currentStart + j - 1], old[oldStart + i - 1])) + ^^^^ + +/polymer.html_script_18.js:166: WARNING - Dangerous use of the global THIS object + prefixCount = this.sharedPrefix(current, old, minLength); + ^^^^ + +/polymer.html_script_18.js:169: WARNING - Dangerous use of the global THIS object + suffixCount = this.sharedSuffix(current, old, minLength - prefixCount); + ^^^^ + +/polymer.html_script_18.js:188: WARNING - Dangerous use of the global THIS object + let ops = this.spliceOperationsFromEditDistances( + ^^^^ + +/polymer.html_script_18.js:189: WARNING - Dangerous use of the global THIS object + this.calcEditDistances(current, currentStart, currentEnd, + ^^^^ + +/polymer.html_script_18.js:242: WARNING - Dangerous use of the global THIS object + if (!this.equals(current[i], old[i])) + ^^^^ + +/polymer.html_script_18.js:251: WARNING - Dangerous use of the global THIS object + while (count < searchLength && this.equals(current[--index1], old[--index2])) + ^^^^ + +/polymer.html_script_18.js:258: WARNING - Dangerous use of the global THIS object + return this.calcSplices(current, 0, current.length, previous, 0, + ^^^^ + +/polymer.html_script_19.js:36: WARNING - Misplaced function annotation. This JSDoc is not attached to a function node. Are you missing parentheses? + class FlattenedNodesObserver { + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_19.js:51: WARNING - Invalid type for parameter 1 of function isSlot. +Expected : {localName:?} (loose) +Found : Node|null +More details: +The found type is a union that includes an unexpected type: null + if (isSlot(node)) { + ^^^^ + +/polymer.html_script_19.js:52: WARNING - Property assignedNodes never defined on node of type Node + return node.assignedNodes({flatten: true}); + ^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_19.js:166: WARNING - Returned type does not match declared return type. +Expected : boolean +Found : undefined + + return; + ^^^^^^^ + +/polymer.html_script_21.js:6: WARNING - All constants must be typed. The compiler could not infer the type of constant normalizedMatchesSelector. Please use an explicit type annotation. For more information, see: +https://github.com/google/closure-compiler/wiki/Using-NTI-(new-type-inference)#warnings-about-uninferred-constants + const normalizedMatchesSelector = p.matches || p.matchesSelector || + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_21.js:140: WARNING - Type annotation references non-existent type type. + * @return {type} Description + ^^^^ + +/polymer.html_script_21.js:181: WARNING - Dangerous use of the global THIS object + return this.node[method].apply(this.node, arguments); + ^^^^ + +/polymer.html_script_21.js:181: WARNING - Dangerous use of the global THIS object + return this.node[method].apply(this.node, arguments); + ^^^^ + +/polymer.html_script_21.js:191: WARNING - Dangerous use of the global THIS object + return this.node[name]; + ^^^^ + +/polymer.html_script_21.js:203: WARNING - Dangerous use of the global THIS object + return this.node[name]; + ^^^^ + +/polymer.html_script_21.js:206: WARNING - Dangerous use of the global THIS object + this.node[name] = value; + ^^^^ + +/polymer.html_script_21.js:320: WARNING - Property polyfillWrapFlushCallback never defined on window.customElements of type CustomElementRegistry + !(window.customElements.polyfillWrapFlushCallback); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_22.js:30: WARNING - legacyElementBase extends non-object type ?. + + const legacyElementBase = Polymer.GestureEventListeners(Polymer.ElementMixin(base)); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_22.js:45: WARNING - Cannot implement non-interface ? + * @implements {Polymer_LegacyElement} + ^ + +/polymer.html_script_22.js:45: WARNING - Type annotation references non-existent type Polymer_LegacyElement. + * @implements {Polymer_LegacyElement} + ^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_22.js:63: WARNING - Cannot add property isAttached to a struct instance after it is constructed. + this.isAttached = true; + ^^^^^^^^^^^^^^^ + +/polymer.html_script_22.js:75: WARNING - Cannot add property isAttached to a struct instance after it is constructed. + this.isAttached = false; + ^^^^^^^^^^^^^^^ + +/polymer.html_script_22.js:88: WARNING - Function this.attributeChanged: called with 3 argument(s). Function requires at least 0 argument(s) and at most 0. + this.attributeChanged(name, old, value); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_22.js:172: WARNING - Returned type does not match declared return type. +Expected : string +Found : string|undefined +More details: +The found type is a union that includes an unexpected type: undefined + return this._serializeValue(value); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_22.js:217: WARNING - Invalid type for parameter 1 of function this._valueToNodeAttribute. +Expected : Element|null +Found : Element|LegacyElement +More details: +The found type is a union that includes an unexpected type: LegacyElement + this._valueToNodeAttribute(node || this, value, attribute); + ^^^^^^^^^^^^ + +/polymer.html_script_22.js:314: WARNING - Property cancelable never defined on options of type {bubbles:boolean|undefined} + cancelable: Boolean(options.cancelable), + ^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_22.js:332: WARNING - The right side in the assignment is not a subtype of the left side. +Expected : Element|null +Found : Element|LegacyElement +More details: +The found type is a union that includes an unexpected type: LegacyElement + node = node || this; + ^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_22.js:334: WARNING - Cannot add property __boundListeners to a struct instance after it is constructed. + (this.__boundListeners = new WeakMap()); + ^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_22.js:357: WARNING - The right side in the assignment is not a subtype of the left side. +Expected : Element|null +Found : Element|LegacyElement +More details: +The found type is a union that includes an unexpected type: LegacyElement + node = node || this; + ^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_22.js:404: WARNING - Property getRootNode never defined on this of type LegacyElement + let root = this.getRootNode(); + ^^^^^^^^^^^^^^^^ + +/polymer.html_script_22.js:405: WARNING - Property host never defined on root of type DocumentFragment + return (root instanceof DocumentFragment) ? root.host : root; + ^^^^^^^^^ + +/polymer.html_script_22.js:418: WARNING - Property forceRender never defined on any type in the program + this.shadowRoot.forceRender(); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_22.js:431: WARNING - Property getEffectiveChildNodes may not be present on DomApi|EventApi. + return Polymer.dom(this).getEffectiveChildNodes(); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_22.js:431: WARNING - Invalid type for parameter 1 of function Polymer.dom. +Expected : Event|Node|null +Found : LegacyElement + + return Polymer.dom(this).getEffectiveChildNodes(); + ^^^^ + +/polymer.html_script_22.js:442: WARNING - Property queryDistributedElements may not be present on DomApi|EventApi. + return Polymer.dom(this).queryDistributedElements(selector); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_22.js:442: WARNING - Invalid type for parameter 1 of function Polymer.dom. +Expected : Event|Node|null +Found : LegacyElement + + return Polymer.dom(this).queryDistributedElements(selector); + ^^^^ + +/polymer.html_script_22.js:455: WARNING - Invalid type for parameter 1 of function list.filter. +Expected : function(this:?,Node|null,number,Array):?|null +Found : function({nodeType:?} (loose)):boolean + + return list.filter(function(n) { + ^^^^^^^^^^^^^ + +/polymer.html_script_22.js:513: WARNING - Property getDistributedNodes may not be present on DomApi|EventApi. + return content ? Polymer.dom(content).getDistributedNodes() : []; + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_22.js:543: WARNING - Cannot perform strict equality / inequality comparisons on incompatible types: +left : LegacyElement +right: Node|null + return this !== node && this.contains(node) && + ^^^^ + +/polymer.html_script_22.js:543: WARNING - Property contains never defined on this of type LegacyElement + return this !== node && this.contains(node) && + ^^^^^^^^^^^^^ + +/polymer.html_script_22.js:544: WARNING - Property getRootNode never defined on this of type LegacyElement + this.getRootNode() === node.getRootNode(); + ^^^^^^^^^^^^^^^^ + +/polymer.html_script_22.js:598: WARNING - Cannot add property _debouncers to a struct instance after it is constructed. + this._debouncers = this._debouncers || {}; + ^^^^^^^^^^^^^^^^ + +/polymer.html_script_22.js:612: WARNING - Cannot add property _debouncers to a struct instance after it is constructed. + this._debouncers = this._debouncers || {}; + ^^^^^^^^^^^^^^^^ + +/polymer.html_script_22.js:623: WARNING - Cannot add property _debouncers to a struct instance after it is constructed. + this._debouncers = this._debouncers || {}; + ^^^^^^^^^^^^^^^^ + +/polymer.html_script_22.js:636: WARNING - Cannot add property _debouncers to a struct instance after it is constructed. + this._debouncers = this._debouncers || {} + ^^^^^^^^^^^^^^^^ + +/polymer.html_script_22.js:657: WARNING - Invalid type(s) for operator BITNOT. +Expected : number +Found : * + + ~Polymer.Async.microTask.run(callback.bind(this)); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_22.js:727: WARNING - Invalid type for parameter 1 of function Polymer.dom.matchesSelector. +Expected : Node|null +Found : Element|LegacyElement +More details: +The found type is a union that includes an unexpected type: LegacyElement + return Polymer.dom.matchesSelector(node || this, selector); + ^^^^^^^^^^^^ + +/polymer.html_script_22.js:739: WARNING - The right side in the assignment is not a subtype of the left side. +Expected : HTMLElement|null|undefined +Found : HTMLElement|LegacyElement +More details: +The found type is a union that includes an unexpected type: LegacyElement + node = node || this; + ^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_22.js:760: WARNING - The right side in the assignment is not a subtype of the left side. +Expected : HTMLElement|null|undefined +Found : HTMLElement|LegacyElement +More details: +The found type is a union that includes an unexpected type: LegacyElement + node = node || this; + ^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_22.js:779: WARNING - The right side in the assignment is not a subtype of the left side. +Expected : HTMLElement|null|undefined +Found : HTMLElement|LegacyElement +More details: +The found type is a union that includes an unexpected type: LegacyElement + node = node || this; + ^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_22.js:795: WARNING - The right side in the assignment is not a subtype of the left side. +Expected : HTMLElement|null|undefined +Found : HTMLElement|LegacyElement +More details: +The found type is a union that includes an unexpected type: LegacyElement + node = node || this; + ^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_22.js:825: WARNING - Function this.splice: called with 3 argument(s). Function requires at least 4 argument(s) and at most 4. + return this.splice(arrayOrPath, index, 1); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_22.js:857: WARNING - parameter var_args does not appear in LegacyElement.prototype._log's parameter list + _log(...args) { + ^^^^^^^^^^^^^^^ + +/polymer.html_script_22.js:866: WARNING - parameter var_args does not appear in LegacyElement.prototype._warn's parameter list + _warn(...args) { + ^^^^^^^^^^^^^^^^ + +/polymer.html_script_22.js:875: WARNING - parameter var_args does not appear in LegacyElement.prototype._error's parameter list + _error(...args) { + ^^^^^^^^^^^^^^^^^ + +/polymer.html_script_22.js:887: WARNING - parameter methodName does not appear in LegacyElement.prototype._logf's parameter list + _logf(...args) { + ^^^^^^^^^^^^^^^^ + +/polymer.html_script_22.js:887: WARNING - parameter var_args does not appear in LegacyElement.prototype._logf's parameter list + _logf(...args) { + ^^^^^^^^^^^^^^^^ + +/polymer.html_script_22.js:888: WARNING - Returned type does not match declared return type. +Expected : string +Found : Array + + return ['[%s::%s]', this.is, ...args]; + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_22.js:888: WARNING - Property is never defined on this of type LegacyElement + return ['[%s::%s]', this.is, ...args]; + ^^^^^^^ + +/polymer.html_script_23.js:49: WARNING - Invalid type for parameter 1 of function _mixinBehaviors. +Expected : {length:?} (loose) +Found : Array|null +More details: +The found type is a union that includes an unexpected type: null + klass = _mixinBehaviors(behaviors, klass); + ^^^^^^^^^ + +/polymer.html_script_23.js:141: WARNING - Property is never defined on this of type PolymerGenerated + Polymer.DomModule.import(this.is, 'template') || + ^^^^^^^ + +/polymer.html_script_23.js:146: WARNING - Property prototype never defined on this of type PolymerGenerated + this.prototype._template; + ^^^^^^^^^^^^^^ + +/polymer.html_script_23.js:177: WARNING - Property _addMethodEventListenerToNode never defined on this of type PolymerGenerated + this._addMethodEventListenerToNode(this, l, info.listeners[l]); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_23.js:188: WARNING - Property _ensureAttribute never defined on this of type PolymerGenerated + this._ensureAttribute(a, info.hostAttributes[a]); + ^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_23.js:304: WARNING - Type annotation references non-existent type Polymer.LegacyElement. + * @return {Polymer.LegacyElement} Generated class + ^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_23.js:313: WARNING - Invalid type for parameter 2 of function mixinBehaviors. +Expected : HTMLElement|null +Found : HTMLElement<|function(new:HTMLElement):?|> + + mixinBehaviors(info.behaviors, HTMLElement) : + ^^^^^^^^^^^ + +/polymer.html_script_23.js:316: WARNING - Property is never defined on info of type Object + klass.is = info.is; + ^^^^^^^ + +/polymer.html_script_24.js:19: WARNING - Type annotation references non-existent type Polymer.LegacyElement. + * @return {Polymer.LegacyElement} Generated class + ^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_24.js:21: WARNING - Found two declarations for property _polymerFn on window.Polymer. + + window.Polymer._polymerFn = function(info) { + ^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_25.js:67: WARNING - MutableData extends non-object type ?. + + class MutableData extends superClass { + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_25.js:138: WARNING - OptionalMutableData extends non-object type ?. + + class OptionalMutableData extends superClass { + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_25.js:170: WARNING - Property mutableData never defined on this of type OptionalMutableData + return mutablePropertyChange(this, property, value, old, this.mutableData); + ^^^^^^^^^^^^^^^^ + +/polymer.html_script_26.js:17: WARNING - All constants must be typed. The compiler could not infer the type of constant DataTemplate. Please use an explicit type annotation. For more information, see: +https://github.com/google/closure-compiler/wiki/Using-NTI-(new-type-inference)#warnings-about-uninferred-constants + const DataTemplate = Polymer.PropertyEffects(HTMLTemplateElementExtension); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_26.js:18: WARNING - All constants must be typed. The compiler could not infer the type of constant MutableDataTemplate. Please use an explicit type annotation. For more information, see: +https://github.com/google/closure-compiler/wiki/Using-NTI-(new-type-inference)#warnings-about-uninferred-constants + const MutableDataTemplate = Polymer.MutableData(DataTemplate); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_26.js:38: WARNING - Property __dataHost never defined on this of type TemplateInstanceBase + this.root = this._stampTemplate(this.__dataHost); + ^^^^^^^^^^^^^^^ + +/polymer.html_script_26.js:45: WARNING - Property __templatizeOwner never defined on this of type TemplateInstanceBase{children:Array, root:DocumentFragment} + if (this.__templatizeOwner.__hideTemplateChildren__) { + ^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_26.js:50: WARNING - Property __templatizeOptions never defined on this of type TemplateInstanceBase{children:Array, root:DocumentFragment} + let options = this.__templatizeOptions; + ^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_26.js:62: WARNING - Property __templatizeOptions never defined on this of type TemplateInstanceBase + let options = this.__templatizeOptions; + ^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_26.js:66: WARNING - Function this._setPendingProperty: called with 2 argument(s). Function requires at least 3 argument(s) and at most 3. + this._setPendingProperty(iprop, props[iprop]); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_26.js:70: WARNING - Property __hostProps never defined on this of type TemplateInstanceBase + for (let hprop in this.__hostProps) { + ^^^^^^^^^^^^^^^^ + +/polymer.html_script_26.js:71: WARNING - Function this._setPendingProperty: called with 2 argument(s). Function requires at least 3 argument(s) and at most 3. + this._setPendingProperty(hprop, this.__dataHost['_host_' + hprop]); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_26.js:71: WARNING - Property __dataHost never defined on this of type TemplateInstanceBase + this._setPendingProperty(hprop, this.__dataHost['_host_' + hprop]); + ^^^^^^^^^^^^^^^ + +/polymer.html_script_26.js:86: WARNING - Property __dataHost never defined on this of type TemplateInstanceBase + this.__dataHost._enqueueClient(this); + ^^^^^^^^^^^^^^^ + +/polymer.html_script_26.js:93: WARNING - Property __templatizeOptions never defined on this of type TemplateInstanceBase{_methodHost:truthy} + if (this._methodHost && this.__templatizeOptions.parentModel) { + ^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_26.js:103: WARNING - Property __dataHost never defined on this of type TemplateInstanceBase{_methodHost:truthy=} + let templateHost = this.__dataHost.__dataHost; + ^^^^^^^^^^^^^^^ + +/polymer.html_script_26.js:165: WARNING - Type annotation references non-existent type Polymer.PropertyEffectsInterface. + * @return {Polymer.PropertyEffectsInterface} The parent model of this instance + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_26.js:168: WARNING - Property __parentModel never defined on this of type TemplateInstanceBase + let model = this.__parentModel; + ^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_26.js:175: WARNING - Property __dataHost never defined on model of type TemplateInstanceBase + model = model.__dataHost.__dataHost; + ^^^^^^^^^^^^^^^^ + +/polymer.html_script_26.js:177: WARNING - Cannot add property __parentModel to a struct instance after it is constructed. + this.__parentModel = model; + ^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_26.js:183: WARNING - All constants must be typed. The compiler could not infer the type of constant MutableTemplateInstanceBase. Please use an explicit type annotation. For more information, see: +https://github.com/google/closure-compiler/wiki/Using-NTI-(new-type-inference)#warnings-about-uninferred-constants + const MutableTemplateInstanceBase = Polymer.MutableData(TemplateInstanceBase); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_26.js:204: WARNING - Property _bindTemplate never defined on klass.prototype of type klass.prototype + klass.prototype._bindTemplate(template); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_26.js:222: WARNING - Property _addPropertyEffect never defined on klass.prototype of type $polymer_html_script_26$classdecl$var1.prototype + klass.prototype._addPropertyEffect('_host_' + prop, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_26.js:223: WARNING - Property PROPERTY_EFFECT_TYPES never defined on klass.prototype of type $polymer_html_script_26$classdecl$var1.prototype + klass.prototype.PROPERTY_EFFECT_TYPES.PROPAGATE, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_26.js:225: WARNING - Property _createNotifyingProperty never defined on klass.prototype of type $polymer_html_script_26$classdecl$var1.prototype + klass.prototype._createNotifyingProperty('_host_' + prop); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_26.js:391: WARNING - Cannot access property constructor of non-object type *. + let templateInfo = owner.constructor._parseTemplate(template); + ^^^^^ + +/polymer.html_script_26.js:396: WARNING - Invalid type for parameter 3 of function createTemplatizerClass. +Expected : Object +Found : * + + baseClass = createTemplatizerClass(template, templateInfo, options); + ^^^^^^^ + +/polymer.html_script_26.js:400: WARNING - Invalid type for parameter 3 of function addPropagateEffects. +Expected : {forwardHostProp:?} (loose) +Found : * + + addPropagateEffects(template, templateInfo, options); + ^^^^^^^ + +/polymer.html_script_26.js:407: WARNING - Returned type does not match declared return type. +Expected : TemplateInstanceBase|null +Found : $polymer_html_script_26$classdecl$var2<|function(new:$polymer_html_script_26$classdecl$var2,...?):undefined|>{prototype:$polymer_html_script_26$classdecl$var2.prototype} + + return klass; + ^^^^^^^^^^^^^ + +/polymer.html_script_26.js:448: WARNING - The right side in the assignment is not a subtype of the left side. +Expected : HTMLElement|null +Found : Node|null +More details: +The found type is a union that includes an unexpected type: Node + el = el.parentNode; + ^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_27.js:80: WARNING - Dangerous use of the global THIS object + this._templatizerTemplate = template; + ^^^^ + +/polymer.html_script_27.js:81: WARNING - Dangerous use of the global THIS object + this.ctor = Polymer.Templatize.templatize(template, this, { + ^^^^ + +/polymer.html_script_27.js:83: WARNING - Dangerous use of the global THIS object + parentModel: this._parentModel, + ^^^^ + +/polymer.html_script_27.js:83: WARNING - Property _parentModel never defined on any type in the program + parentModel: this._parentModel, + ^^^^^^^^^^^^^^^^^ + +/polymer.html_script_27.js:84: WARNING - Dangerous use of the global THIS object + instanceProps: this._instanceProps, + ^^^^ + +/polymer.html_script_27.js:84: WARNING - Property _instanceProps never defined on any type in the program + instanceProps: this._instanceProps, + ^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_27.js:85: WARNING - Dangerous use of the global THIS object + forwardHostProp: this._forwardHostPropV2, + ^^^^ + +/polymer.html_script_27.js:85: WARNING - Property _forwardHostPropV2 never defined on any type in the program + forwardHostProp: this._forwardHostPropV2, + ^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_27.js:86: WARNING - Dangerous use of the global THIS object + notifyInstanceProp: this._notifyInstancePropV2 + ^^^^ + +/polymer.html_script_27.js:86: WARNING - Property _notifyInstancePropV2 never defined on any type in the program + notifyInstanceProp: this._notifyInstancePropV2 + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_27.js:99: WARNING - Type annotation references non-existent type TemplateInstanceBase. + * @return {TemplateInstanceBase} Returns the created instance of + ^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_27.js:103: WARNING - Dangerous use of the global THIS object + return new this.ctor(model); + ^^^^ + +/polymer.html_script_27.js:113: WARNING - Type annotation references non-existent type TemplateInstanceBase. + * @return {TemplateInstanceBase} Model representing the binding scope for + ^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_27.js:117: WARNING - Dangerous use of the global THIS object + return Polymer.Templatize.modelForElement(this._templatizerTemplate, el); + ^^^^ + +/polymer.html_script_28.js:10: WARNING - Cannot implement non-interface ? + * @implements {Polymer_GestureEventListener} + ^ + +/polymer.html_script_28.js:10: WARNING - Type annotation references non-existent type Polymer_GestureEventListener. + * @implements {Polymer_GestureEventListener} + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_28.js:40: WARNING - Cannot add property mutableData to a struct instance after it is constructed. + this.mutableData = true; + ^^^^^^^^^^^^^^^^ + +/polymer.html_script_28.js:52: WARNING - Property root never defined on this of type DomBind{parentNode:Node} + this.parentNode.insertBefore(this.root, this); + ^^^^^^^^^ + +/polymer.html_script_28.js:58: WARNING - Property root never defined on this of type DomBind{__children:{length:number} (loose)} + this.root.appendChild(this.__children[i]); + ^^^^^^^^^ + +/polymer.html_script_28.js:77: WARNING - Function $jscomp$this.render: called with 1 argument(s). Function requires at least 0 argument(s) and at most 0. + this.render(template); + ^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_28.js:85: WARNING - Cannot add property root to a struct instance after it is constructed. + this.root = this._stampTemplate(template); + ^^^^^^^^^ + +/polymer.html_script_28.js:85: WARNING - Property _stampTemplate never defined on this of type DomBind + this.root = this._stampTemplate(template); + ^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_28.js:86: WARNING - Cannot add property $ to a struct instance after it is constructed. + this.$ = this.root.$; + ^^^^^^ + +/polymer.html_script_28.js:86: WARNING - Property root never defined on this of type DomBind + this.$ = this.root.$; + ^^^^^^^^^ + +/polymer.html_script_28.js:87: WARNING - Cannot add property __children to a struct instance after it is constructed. + this.__children = []; + ^^^^^^^^^^^^^^^ + +/polymer.html_script_28.js:88: WARNING - Property root never defined on this of type DomBind + for (let n=this.root.firstChild; n; n=n.nextSibling) { + ^^^^^^^^^ + +/polymer.html_script_28.js:89: WARNING - Property __children never defined on this of type DomBind + this.__children[this.__children.length] = n; + ^^^^^^^^^^^^^^^ + +/polymer.html_script_28.js:89: WARNING - Property __children never defined on this of type DomBind + this.__children[this.__children.length] = n; + ^^^^^^^^^^^^^^^ + +/polymer.html_script_28.js:91: WARNING - Property _flushProperties never defined on this of type DomBind + this._flushProperties(); + ^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_30.js:274: WARNING - Property disconnectedCallback never defined on domRepeatBase.prototype of type domRepeatBase.prototype + super.disconnectedCallback(); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_30.js:275: WARNING - Cannot add property __isDetached to a struct instance after it is constructed. + this.__isDetached = true; + ^^^^^^^^^^^^^^^^^ + +/polymer.html_script_30.js:282: WARNING - Property connectedCallback never defined on domRepeatBase.prototype of type domRepeatBase.prototype + super.connectedCallback(); + ^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_30.js:286: WARNING - Property parentNode never defined on this of type DomRepeat{__isDetached:boolean} + let parent = this.parentNode; + ^^^^^^^^^^^^^^^ + +/polymer.html_script_30.js:298: WARNING - Cannot add property template to a struct instance after it is constructed. + let template = this.template = this.querySelector('template'); + ^^^^^^^^^^^^^ + +/polymer.html_script_30.js:298: WARNING - Property querySelector never defined on this of type DomRepeat + let template = this.template = this.querySelector('template'); + ^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_30.js:302: WARNING - Property querySelector never defined on $jscomp$this of type DomRepeat + if (this.querySelector('template')) { + ^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_30.js:309: WARNING - Invalid type for parameter 1 of function observer.observe. +Expected : Node|null +Found : DomRepeat + + observer.observe(this, {childList: true}); + ^^^^ + +/polymer.html_script_30.js:314: WARNING - Property as never defined on this of type DomRepeat + instanceProps[this.as] = true; + ^^^^^^^ + +/polymer.html_script_30.js:315: WARNING - Property indexAs never defined on this of type DomRepeat + instanceProps[this.indexAs] = true; + ^^^^^^^^^^^^ + +/polymer.html_script_30.js:316: WARNING - Property itemsIndexAs never defined on this of type DomRepeat + instanceProps[this.itemsIndexAs] = true; + ^^^^^^^^^^^^^^^^^ + +/polymer.html_script_30.js:318: WARNING - Property mutableData never defined on this of type DomRepeat + mutableData: this.mutableData, + ^^^^^^^^^^^^^^^^ + +/polymer.html_script_30.js:322: WARNING - Dangerous use of the global THIS object + let i$ = this.__instances; + ^^^^ + +/polymer.html_script_30.js:328: WARNING - Dangerous use of the global THIS object + if (Polymer.Path.matches(this.as, prop)) { + ^^^^ + +/polymer.html_script_30.js:329: WARNING - Dangerous use of the global THIS object + let idx = inst[this.itemsIndexAs]; + ^^^^ + +/polymer.html_script_30.js:330: WARNING - Dangerous use of the global THIS object + if (prop == this.as) { + ^^^^ + +/polymer.html_script_30.js:331: WARNING - Dangerous use of the global THIS object + this.items[idx] = value; + ^^^^ + +/polymer.html_script_30.js:333: WARNING - Dangerous use of the global THIS object + let path = Polymer.Path.translate(this.as, 'items.' + idx, prop); + ^^^^ + +/polymer.html_script_30.js:334: WARNING - Dangerous use of the global THIS object + this.notifyPath(path, value); + ^^^^ + +/polymer.html_script_30.js:348: WARNING - Property __dataHost never defined on this of type DomRepeat + return this.__dataHost._methodHost || this.__dataHost; + ^^^^^^^^^^^^^^^ + +/polymer.html_script_30.js:357: WARNING - Invalid type for parameter 1 of function this.__debounceRender. +Expected : function():? +Found : function(this:DomRepeat):? + + this.__debounceRender(this.__render); + ^^^^^^^^^^^^^ + +/polymer.html_script_30.js:367: WARNING - Invalid type for parameter 1 of function this.__debounceRender. +Expected : function():? +Found : function(this:DomRepeat):? + + this.__debounceRender(this.__render); + ^^^^^^^^^^^^^ + +/polymer.html_script_30.js:387: WARNING - Invalid type for parameter 1 of function this.__debounceRender. +Expected : function():? +Found : function(this:DomRepeat):? + + this.__debounceRender(this.__requestRenderChunk); + ^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_30.js:400: WARNING - Property _targetFrameTime never defined on this of type DomRepeat + let ratio = this._targetFrameTime / (currChunkTime - this.__lastChunkTime); + ^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_30.js:404: WARNING - Invalid type for parameter 1 of function this.__debounceRender. +Expected : function():? +Found : function(this:DomRepeat):? + + this.__debounceRender(this.__render); + ^^^^^^^^^^^^^ + +/polymer.html_script_30.js:423: WARNING - Invalid type for parameter 1 of function this.__debounceRender. +Expected : function():? +Found : function(this:DomRepeat):? + + this.__debounceRender(this.__render); + ^^^^^^^^^^^^^ + +/polymer.html_script_30.js:434: WARNING - Invalid type for parameter 1 of function this.__debounceRender. +Expected : function():? +Found : function(this:DomRepeat):? + + this.__debounceRender(this.__render, this.delay); + ^^^^^^^^^^^^^ + +/polymer.html_script_30.js:434: WARNING - Property delay never defined on this of type DomRepeat{__needFullRefresh:boolean, __observePaths:truthy} + this.__debounceRender(this.__render, this.delay); + ^^^^^^^^^^ + +/polymer.html_script_30.js:448: WARNING - Invalid type for parameter 1 of function Polymer.Async.timeOut.after. +Expected : number +Found : number|undefined +More details: +The found type is a union that includes an unexpected type: undefined + , delay > 0 ? Polymer.Async.timeOut.after(delay) : Polymer.Async.microTask + ^^^^^ + +/polymer.html_script_30.js:463: WARNING - Invalid type for parameter 1 of function this.__debounceRender. +Expected : function():? +Found : function(this:DomRepeat):? + + this.__debounceRender(this.__render); + ^^^^^^^^^^^^^ + +/polymer.html_script_30.js:480: WARNING - Property _setRenderedItemCount never defined on this of type DomRepeat{__pool:{length:number} (loose)} + this._setRenderedItemCount(this.__instances.length); + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_30.js:482: WARNING - Property dispatchEvent never defined on this of type DomRepeat{__instances:{length:?} (loose), __pool:{length:number} (loose)} + this.dispatchEvent(new CustomEvent('dom-change', { + ^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_30.js:491: WARNING - All constants must be typed. The compiler could not infer the type of constant items. Please use an explicit type annotation. For more information, see: +https://github.com/google/closure-compiler/wiki/Using-NTI-(new-type-inference)#warnings-about-uninferred-constants + const items = this.items || []; + ^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_30.js:516: WARNING - Property as never defined on this of type DomRepeat{__instances:Object, __itemsIdxToInstIdx:Object{}, __limit:number, items:?=} + inst._setPendingProperty(this.as, item); + ^^^^^^^ + +/polymer.html_script_30.js:517: WARNING - Property indexAs never defined on this of type DomRepeat{__instances:Object, __itemsIdxToInstIdx:Object{}, __limit:number, items:?=} + inst._setPendingProperty(this.indexAs, instIdx); + ^^^^^^^^^^^^ + +/polymer.html_script_30.js:518: WARNING - Property itemsIndexAs never defined on this of type DomRepeat{__instances:Object, __itemsIdxToInstIdx:Object{}, __limit:number, items:?=} + inst._setPendingProperty(this.itemsIndexAs, itemIdx); + ^^^^^^^^^^^^^^^^^ + +/polymer.html_script_30.js:554: WARNING - Property as never defined on this of type DomRepeat + model[this.as] = item; + ^^^^^^^ + +/polymer.html_script_30.js:555: WARNING - Property indexAs never defined on this of type DomRepeat + model[this.indexAs] = instIdx; + ^^^^^^^^^^^^ + +/polymer.html_script_30.js:556: WARNING - Property itemsIndexAs never defined on this of type DomRepeat + model[this.itemsIndexAs] = itemIdx; + ^^^^^^^^^^^^^^^^^ + +/polymer.html_script_30.js:565: WARNING - Property as never defined on this of type DomRepeat{__pool:{pop:LOOSE_TOP_FUNCTION} (loose)} + inst._setPendingProperty(this.as, item); + ^^^^^^^ + +/polymer.html_script_30.js:566: WARNING - Property indexAs never defined on this of type DomRepeat{__pool:{pop:LOOSE_TOP_FUNCTION} (loose)} + inst._setPendingProperty(this.indexAs, instIdx); + ^^^^^^^^^^^^ + +/polymer.html_script_30.js:567: WARNING - Property itemsIndexAs never defined on this of type DomRepeat{__pool:{pop:LOOSE_TOP_FUNCTION} (loose)} + inst._setPendingProperty(this.itemsIndexAs, itemIdx); + ^^^^^^^^^^^^^^^^^ + +/polymer.html_script_30.js:574: WARNING - Property parentNode never defined on this of type DomRepeat{__instances:Object, __pool:{pop:LOOSE_TOP_FUNCTION} (loose)} + this.parentNode.insertBefore(inst.root, beforeNode); + ^^^^^^^^^^^^^^^ + +/polymer.html_script_30.js:601: WARNING - Property as never defined on this of type DomRepeat{__instances:Object, __itemsIdxToInstIdx:Object} + let itemPath = this.as + (itemSubPath ? '.' + itemSubPath : ''); + ^^^^^^^ + +/polymer.html_script_30.js:625: WARNING - Property as never defined on this of type DomRepeat + return instance && instance[this.as]; + ^^^^^^^ + +/polymer.html_script_30.js:639: WARNING - Property indexAs never defined on this of type DomRepeat + return instance && instance[this.indexAs]; + ^^^^^^^^^^^^ + +/polymer.html_script_30.js:656: WARNING - Type annotation references non-existent type TemplateInstanceBase. + * @return {TemplateInstanceBase} Model representing the binding scope for + ^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_30.js:660: WARNING - Property template never defined on this of type DomRepeat + return Polymer.Templatize.modelForElement(this.template, el); + ^^^^^^^^^^^^^ + +/polymer.html_script_30.js:665: WARNING - Invalid type for parameter 2 of function customElements.define. +Expected : function(new:HTMLElement):? +Found : DomRepeat<|function(new:DomRepeat):undefined|> + + customElements.define(DomRepeat.is, DomRepeat); + ^^^^^^^^^ + +/polymer.html_script_31.js:142: WARNING - Property _lastIf never defined on this of type DomIf{__instance:?, if:?=, restamp:?=} + if (this.if != this._lastIf) { + ^^^^^^^^^^^^ + +/polymer.html_script_31.js:143: WARNING - Property dispatchEvent never defined on this of type DomIf{__instance:?, if:?=, restamp:?=} + this.dispatchEvent(new CustomEvent('dom-change', { + ^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_31.js:147: WARNING - Cannot add property _lastIf to a struct instance after it is constructed. + this._lastIf = this.if; + ^^^^^^^^^^^^ + +/polymer.html_script_31.js:152: WARNING - Property parentNode never defined on this of type DomIf + let parentNode = this.parentNode; + ^^^^^^^^^^^^^^^ + +/polymer.html_script_31.js:156: WARNING - Property querySelector never defined on this of type DomIf + let template = this.querySelector('template'); + ^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_31.js:160: WARNING - Property querySelector never defined on $jscomp$this of type DomIf + if (this.querySelector('template')) { + ^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_31.js:167: WARNING - Invalid type for parameter 1 of function observer.observe. +Expected : Node|null +Found : DomIf + + observer.observe(this, {childList: true}); + ^^^^ + +/polymer.html_script_31.js:170: WARNING - Cannot add property __ctor to a struct instance after it is constructed. + this.__ctor = Polymer.Templatize.templatize(template, this, { + ^^^^^^^^^^^ + +/polymer.html_script_31.js:175: WARNING - Dangerous use of the global THIS object + if (this.__instance) { + ^^^^ + +/polymer.html_script_31.js:176: WARNING - Dangerous use of the global THIS object + if (this.if) { + ^^^^ + +/polymer.html_script_31.js:177: WARNING - Dangerous use of the global THIS object + this.__instance.forwardHostProp(prop, value); + ^^^^ + +/polymer.html_script_31.js:183: WARNING - Dangerous use of the global THIS object + this.__invalidProps = this.__invalidProps || Object.create(null); + ^^^^ + +/polymer.html_script_31.js:183: WARNING - Dangerous use of the global THIS object + this.__invalidProps = this.__invalidProps || Object.create(null); + ^^^^ + +/polymer.html_script_31.js:184: WARNING - Dangerous use of the global THIS object + this.__invalidProps[Polymer.Path.root(prop)] = true; + ^^^^ + +/polymer.html_script_31.js:198: WARNING - Property previousSibling never defined on this of type DomIf{__ctor:truthy=, __instance:{children:?} (loose)} + let lastChild = this.previousSibling; + ^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_31.js:214: WARNING - Property __dataHost never defined on this of type DomIf{__instance:{_setPendingProperty:LOOSE_TOP_FUNCTION} (loose)} + this.__instance._setPendingProperty(prop, this.__dataHost[prop]); + ^^^^^^^^^^^^^^^ + +/polymer.html_script_31.js:237: WARNING - Property if never defined on this of type DomIf + let hidden = this.__hideTemplateChildren__ || !this.if; + ^^^^^^^ + +/polymer.html_script_31.js:245: WARNING - Invalid type for parameter 2 of function customElements.define. +Expected : function(new:HTMLElement):? +Found : DomIf<|function(new:DomIf):undefined|> + + customElements.define(DomIf.is, DomIf); + ^^^^^ + +/polymer.html_script_32.js:86: WARNING - ArraySelectorMixin extends non-object type ?. + + constructor() { + ^^^^^^^^^^^^^^^ + +/polymer.html_script_32.js:143: WARNING - Property items never defined on this of type ArraySelectorMixin + if (selected.has(this.items[idx])) { + ^^^^^^^^^^ + +/polymer.html_script_32.js:144: WARNING - Property items never defined on this of type ArraySelectorMixin + selected.set(this.items[idx], idx); + ^^^^^^^^^^ + +/polymer.html_script_32.js:155: WARNING - Property splice never defined on $jscomp$this of type ArraySelectorMixin{multi:truthy} + this.splice('selected', sidx, 1); + ^^^^^^^^^^^ + +/polymer.html_script_32.js:157: WARNING - Cannot add property selected to a struct instance after it is constructed. + this.selected = this.selectedItem = null; + ^^^^^^^^^^^^^ + +/polymer.html_script_32.js:157: WARNING - Cannot add property selectedItem to a struct instance after it is constructed. + this.selected = this.selectedItem = null; + ^^^^^^^^^^^^^^^^^ + +/polymer.html_script_32.js:167: WARNING - Cannot add property __dataLinkedPaths to a struct instance after it is constructed. + this.__dataLinkedPaths = {}; + ^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_32.js:172: WARNING - Property linkPaths never defined on $jscomp$this of type ArraySelectorMixin + this.linkPaths('items.' + idx, 'selected.' + sidx++); + ^^^^^^^^^^^^^^ + +/polymer.html_script_32.js:177: WARNING - Property linkPaths never defined on $jscomp$this of type ArraySelectorMixin + this.linkPaths('selected', 'items.' + idx); + ^^^^^^^^^^^^^^ + +/polymer.html_script_32.js:178: WARNING - Property linkPaths never defined on $jscomp$this of type ArraySelectorMixin + this.linkPaths('selectedItem', 'items.' + idx); + ^^^^^^^^^^^^^^ + +/polymer.html_script_32.js:189: WARNING - Cannot add property __dataLinkedPaths to a struct instance after it is constructed. + this.__dataLinkedPaths = {}; + ^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_32.js:196: WARNING - Cannot add property selected to a struct instance after it is constructed. + this.selected = this.multi ? [] : null + ^^^^^^^^^^^^^ + +/polymer.html_script_32.js:197: WARNING - Cannot add property selectedItem to a struct instance after it is constructed. + this.selectedItem = null; + ^^^^^^^^^^^^^^^^^ + +/polymer.html_script_32.js:217: WARNING - Property items never defined on this of type ArraySelectorMixin + return this.isSelected(this.items[idx]); + ^^^^^^^^^^ + +/polymer.html_script_32.js:233: WARNING - Property __dataLinkedPaths never defined on this of type ArraySelectorMixin + let selected = this.__dataLinkedPaths['items.' + idx]; + ^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_32.js:254: WARNING - Property splice never defined on this + this.splice('selected', sidx, 1); + ^^^^^^^^^^^ + +/polymer.html_script_32.js:256: WARNING - Cannot add property selected to a struct instance after it is constructed. + this.selected = this.selectedItem = null; + ^^^^^^^^^^^^^ + +/polymer.html_script_32.js:256: WARNING - Cannot add property selectedItem to a struct instance after it is constructed. + this.selected = this.selectedItem = null; + ^^^^^^^^^^^^^^^^^ + +/polymer.html_script_32.js:267: WARNING - Property items never defined on this of type ArraySelectorMixin + this.deselect(this.items[idx]); + ^^^^^^^^^^ + +/polymer.html_script_32.js:277: WARNING - Property items never defined on this of type ArraySelectorMixin + this.selectIndex(this.items.indexOf(item)); + ^^^^^^^^^^ + +/polymer.html_script_32.js:287: WARNING - Property items never defined on this of type ArraySelectorMixin + let item = this.items[idx]; + ^^^^^^^^^^ + +/polymer.html_script_32.js:295: WARNING - Property push never defined on this of type ArraySelectorMixin{__selectedMap:{set:LOOSE_TOP_FUNCTION} (loose), multi:truthy} + this.push('selected', item); + ^^^^^^^^^ + +/polymer.html_script_32.js:297: WARNING - Cannot add property selected to a struct instance after it is constructed. + this.selected = this.selectedItem = item; + ^^^^^^^^^^^^^ + +/polymer.html_script_32.js:297: WARNING - Cannot add property selectedItem to a struct instance after it is constructed. + this.selected = this.selectedItem = item; + ^^^^^^^^^^^^^^^^^ + +/polymer.html_script_32.js:391: WARNING - Invalid type for parameter 2 of function customElements.define. +Expected : function(new:HTMLElement):? +Found : ArraySelector<|function(new:ArraySelector,...?):undefined|> + + customElements.define(ArraySelector.is, ArraySelector); + ^^^^^^^^^^^^^ + +/polymer.html_script_33.js:47: WARNING - Returned type does not match declared return type. +Expected : HTMLStyleElement|null +Found : undefined + + return; + ^^^^^^^ + +/polymer.html_script_33.js:55: WARNING - Returned type does not match declared return type. +Expected : HTMLStyleElement|null +Found : Element + + return this._style; + ^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_34.js:132: WARNING - Dangerous use of the global THIS object + return mutablePropertyChange(this, property, value, old, this.mutableData); + ^^^^ + +/polymer.html_script_4.js:37: WARNING - Dangerous use of the global THIS object + cssText += this.cssFromModule(modules[i]); + ^^^^ + +/polymer.html_script_4.js:61: WARNING - Dangerous use of the global THIS object + cssText += this.cssFromTemplate(t, m.assetpath); + ^^^^ + +/polymer.html_script_4.js:64: WARNING - Dangerous use of the global THIS object + cssText += this.cssFromModuleImports(moduleId); + ^^^^ + +/polymer.html_script_4.js:93: WARNING - Dangerous use of the global THIS object + cssText += this.cssFromModules(include); + ^^^^ + +/polymer.html_script_5.js:87: WARNING - Property importForElement never defined on HTMLImports of type HTMLImports + HTMLImports.importForElement(this) || document : this.ownerDocument; + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_5.js:90: WARNING - Cannot add property __assetpath to a struct instance after it is constructed. + this.__assetpath = Polymer.ResolveUrl.pathFromUrl(url); + ^^^^^^^^^^^^^^^^ + +/polymer.html_script_6.js:121: WARNING - Dangerous use of the global THIS object + this.isAncestor(base, path) || + ^^^^ + +/polymer.html_script_6.js:122: WARNING - Dangerous use of the global THIS object + this.isDescendant(base, path); + ^^^^ + +/polymer.html_script_6.js:172: WARNING - Dangerous use of the global THIS object + return this.normalize(path).split('.'); + ^^^^ + +/polymer.html_script_6.js:191: WARNING - Dangerous use of the global THIS object + let parts = this.split(path); + ^^^^ + +/polymer.html_script_6.js:218: WARNING - Dangerous use of the global THIS object + let parts = this.split(path); + ^^^^ + +/polymer.html_script_8.js:103: WARNING - PropertyAccessors extends non-object type ?. + + constructor() { + ^^^^^^^^^^^^^^^ + +/polymer.html_script_8.js:110: WARNING - Function this._attributeToProperty: called with 2 argument(s). Function requires at least 3 argument(s) and at most 3. + this._attributeToProperty(name, value); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_8.js:190: WARNING - Property hasAttribute never defined on this of type PropertyAccessors + if (!this.hasAttribute(attribute)) { + ^^^^^^^^^^^^^^^^^ + +/polymer.html_script_8.js:191: WARNING - Invalid type for parameter 1 of function this._valueToNodeAttribute. +Expected : Element|null +Found : PropertyAccessors + + this._valueToNodeAttribute(this, value, attribute); + ^^^^ + +/polymer.html_script_8.js:223: WARNING - Invalid type for parameter 1 of function this._valueToNodeAttribute. +Expected : Element|null +Found : PropertyAccessors{__serializing:boolean} + + this._valueToNodeAttribute(this, value, + ^^^^ + +/polymer.html_script_8.js:373: WARNING - Dangerous use of the global THIS object + return this.__data[property]; + ^^^^ + +/polymer.html_script_8.js:376: WARNING - Dangerous use of the global THIS object + this._setProperty(property, value); + ^^^^ + +/polymer.html_script_8.js:417: WARNING - Missing return statement. Function expected to return boolean. + _setPendingProperty(property, value) { + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_9.js:106: WARNING - TemplateStamp extends non-object type ?. + + class TemplateStamp extends superClass { + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_9.js:110: WARNING - Cannot add property $ to a struct instance after it is constructed. + this.$ = null; + ^^^^^^ + +/polymer.html_script_9.js:215: WARNING - Property hasAttribute never defined on node of type Node + if (node.localName == 'template' && !node.hasAttribute('preserve-content')) { + ^^^^^^^^^^^^^^^^^ + +/polymer.html_script_9.js:258: WARNING - Invalid type for parameter 1 of function root.removeChild. +Expected : Node|null +Found : {nextSibling:?, nodeType:number, textContent:number|string} (loose) + + root.removeChild(n); + ^ + +/polymer.html_script_9.js:315: WARNING - Invalid type for parameter 1 of function Array.from. +Expected : IArrayLike|Iterable|string +Found : NamedNodeMap|null +More details: +The found type is a union that includes an unexpected type: null + let attrs = Array.from(node.attributes); + ^^^^^^^^^^^^^^^ + +/polymer.html_script_9.js:337: WARNING - Missing return statement. Function expected to return boolean. + static _parseTemplateNodeAttribute(node, templateInfo, nodeInfo, name, value) { + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_9.js:340: WARNING - Property removeAttribute never defined on node of type Node + node.removeAttribute(name); + ^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_9.js:366: WARNING - Property __templateInfo never defined on template of type HTMLTemplateElement + let templateInfo = template.__templateInfo; + ^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_9.js:396: WARNING - Property decorate never defined on HTMLTemplateElement of type HTMLTemplateElement<|function(new:HTMLTemplateElement):?|> + HTMLTemplateElement.decorate(template); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +/polymer.html_script_9.js:412: WARNING - Returned type does not match declared return type. +Expected : DocumentFragment|null +Found : Node{$:Object{}, __noInsertionPoint:boolean, nodeList:Array} + + return dom; + ^^^^^^^^^^^ + +externs/closure-types.js:217: WARNING - Invalid redeclaration of property _setPendingProperty. +inherited type : function(this:Polymer_PropertyAccessors,string,*):boolean +overriding type : function(this:Polymer_PropertyEffects,*,*,*):? + +Polymer_PropertyEffects.prototype._setPendingProperty = function(property, value, shouldNotify){}; +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +externs/closure-types.js:378: WARNING - property connectedCallback not defined on any supertype of Polymer_ElementMixin +Polymer_ElementMixin.prototype.connectedCallback = function(){}; +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +externs/closure-types.js:382: WARNING - property disconnectedCallback not defined on any supertype of Polymer_ElementMixin +Polymer_ElementMixin.prototype.disconnectedCallback = function(){}; +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +externs/closure-types.js:402: WARNING - property attributeChangedCallback not defined on any supertype of Polymer_ElementMixin +Polymer_ElementMixin.prototype.attributeChangedCallback = function(name, old, value){}; +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +externs/closure-types.js:717: WARNING - property mutableData on interface Polymer_OptionalMutableData is not implemented by type OptionalMutableData +Polymer_OptionalMutableData.prototype.mutableData; +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +externs/closure-types.js:731: WARNING - property items on interface Polymer_ArraySelectorMixin is not implemented by type ArraySelectorMixin +Polymer_ArraySelectorMixin.prototype.items; +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +externs/closure-types.js:734: WARNING - property multi on interface Polymer_ArraySelectorMixin is not implemented by type ArraySelectorMixin +Polymer_ArraySelectorMixin.prototype.multi; +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +externs/closure-types.js:737: WARNING - property selected on interface Polymer_ArraySelectorMixin is not implemented by type ArraySelectorMixin +Polymer_ArraySelectorMixin.prototype.selected; +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +externs/closure-types.js:740: WARNING - property selectedItem on interface Polymer_ArraySelectorMixin is not implemented by type ArraySelectorMixin +Polymer_ArraySelectorMixin.prototype.selectedItem; +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +externs/closure-types.js:743: WARNING - property toggle on interface Polymer_ArraySelectorMixin is not implemented by type ArraySelectorMixin +Polymer_ArraySelectorMixin.prototype.toggle; +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +0 error(s), 498 warning(s), 70.9% typed diff --git a/externs/webcomponents-externs.js b/externs/webcomponents-externs.js index 121b5d1925..f7bba2421f 100644 --- a/externs/webcomponents-externs.js +++ b/externs/webcomponents-externs.js @@ -12,24 +12,6 @@ let HTMLImports = { window.HTMLImports = HTMLImports; -let ShadyCSS = { - /** - * @param {!HTMLElement} element - * @param {Object=} overrides - */ - applyStyle(element, overrides){}, - updateStyles(){}, - /** - * @param {!HTMLTemplateElement} template - * @param {string} is - * @param {string=} extendsElement - */ - prepareTemplate(template, is, extendsElement){}, - nativeCss: false, - nativeShadow: false -}; -window.ShadyCSS = ShadyCSS; - let ShadyDOM = { inUse: false, flush(){}, diff --git a/gulpfile.js b/gulpfile.js index 97b6464987..f849d98ae4 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -86,6 +86,9 @@ class Log extends Transform { } } +let CLOSURE_LINT_ONLY = false; +let EXPECTED_WARNING_COUNT = 498; + gulp.task('closure', ['clean'], () => { let entry, splitRx, joinRx; @@ -109,6 +112,26 @@ gulp.task('closure', ['clean'], () => { shell: `./${entry}` }); + function closureLintLogger(log) { + let chalk = require('chalk'); + let result = log.split(/\n/).slice(-2)[0]; + let warnings = result.match(/(\d+) warning/); + // write out log to use with diffing tools later + fs.writeFileSync('closure.log', chalk.stripColor(log)); + if (warnings && Number(warnings[1]) > EXPECTED_WARNING_COUNT) { + console.error(chalk.red(`closure linting: actual warning count ${warnings[1]} greater than expected warning count ${EXPECTED_WARNING_COUNT}`)); + process.exit(1); + } + } + + let closurePluginOptions; + + if (CLOSURE_LINT_ONLY) { + closurePluginOptions = { + logger: closureLintLogger + } + } + const closureStream = closure({ compilation_level: 'ADVANCED', language_in: 'ES6_STRICT', @@ -118,7 +141,9 @@ gulp.task('closure', ['clean'], () => { assume_function_wrapper: true, rewrite_polyfills: false, new_type_inf: true, + checks_only: CLOSURE_LINT_ONLY, externs: [ + 'bower_components/shadycss/externs/shadycss-externs.js', 'externs/webcomponents-externs.js', 'externs/polymer-externs.js', 'externs/closure-types.js', @@ -128,7 +153,7 @@ gulp.task('closure', ['clean'], () => { 'polymerMixinClass', 'polymerElement' ] - }); + }, closurePluginOptions); const closurePipeline = lazypipe() .pipe(() => closureStream) @@ -186,6 +211,11 @@ gulp.task('closure', ['clean'], () => { .pipe(gulp.dest(COMPILED_DIR)) }); +gulp.task('lint-closure', (done) => { + CLOSURE_LINT_ONLY = true; + runseq('closure', done); +}) + gulp.task('build', ['clean'], () => { // process source files in the project const sources = project.sources();