| function badFuncNoAnnotation() { | |
| return 1; // ERROR - no @return annotation. | |
| } | |
| /** | |
| * @return {number} | |
| */ | |
| function badFuncAnnotatedButNoReturn() // ERROR - no @return annotation. | |
| { | |
| } | |
| /** | |
| * @return {number} | |
| */ | |
| function badFuncAnnotatedButNoReturnValue() // ERROR - no returned value. | |
| { | |
| return; | |
| } | |
| /** | |
| * @return {number} | |
| */ | |
| function goodFunc() // OK - annotated @return. | |
| { | |
| return 1; | |
| } | |
| /** | |
| * @returns {number} | |
| */ | |
| function badReturnsShouldBeReturnFunc() // ERROR - @returns, should be @return. | |
| { | |
| return 1; | |
| } | |
| /** | |
| * @return number | |
| */ | |
| function badReturnShouldBeTypedFunc() // ERROR - number, not {number}. | |
| { | |
| return 1; | |
| } | |
| /** | |
| * @param number foo | |
| * @param bar | |
| */ | |
| function badParamAnnotationsFunc(foo, bar) // ERROR - @param's should be well-formed | |
| { | |
| return 1; | |
| } | |
| /** | |
| * @returns {number} | |
| */ | |
| function badReturnsShouldBeReturnNoValueFunc() // ERROR - @returns, should be @return. | |
| { | |
| return; | |
| } | |
| /** | |
| * @returns {number} | |
| */ | |
| function badReturnsShouldBeAbsentFunc() // ERROR - @returns, should be absent. | |
| { | |
| } | |
| /** | |
| * @constructor | |
| */ | |
| function TypeOne() { | |
| function callback() // OK - not a method. | |
| { | |
| return 1; | |
| } | |
| } | |
| TypeOne.prototype = { | |
| badApiMethodNoAnnotation: function() // ERROR - public method. | |
| { | |
| return 1; | |
| }, | |
| _privateMethod: function() // OK - non-public method. | |
| { | |
| var obj = {}; | |
| /** | |
| * @constructor | |
| * @param {number} val | |
| */ | |
| obj["a"] = obj["b"] = function(val) { // OK - constructor | |
| this.foo = val; | |
| } | |
| /** | |
| * @param {number} val | |
| */ | |
| obj["c"] = obj["d"] = function(val) { // ERROR - no @this | |
| this.foo = val; | |
| } | |
| return 1; | |
| }, | |
| methodTwo: function() | |
| { | |
| function callback() // OK - not a method. | |
| { | |
| return 1; | |
| } | |
| }, | |
| /** | |
| * @return {number} | |
| */ | |
| methodThatThrows: function() // OK - throws and should be overridden in subclasses. | |
| { | |
| throw "Not implemented"; | |
| }, | |
| /** | |
| * @return {number} | |
| */ | |
| badMethodDoesNotReturnValue: function() // ERROR - does not return value. | |
| { | |
| return; | |
| }, | |
| /** | |
| * @return {number} | |
| */ | |
| badMethodDoesNotReturn: function() // ERROR - does not return. | |
| { | |
| var foo = 1; | |
| }, | |
| /** | |
| * @returns {number} | |
| */ | |
| badMethodReturnsShouldBeReturn: function() // ERROR - @returns, should be @return | |
| { | |
| return 1; | |
| }, | |
| /** | |
| * @returns {number} | |
| */ | |
| badMethodReturnsShouldBeAbsentToo: function() // ERROR - @returns, should be absent | |
| { | |
| return; | |
| }, | |
| /** | |
| * @returns {number} | |
| */ | |
| badMethodReturnsShouldBeAbsent: function() // ERROR - @returns, should be absent | |
| { | |
| var foo = 1; | |
| } | |
| } | |
| /** | |
| * @constructor | |
| */ | |
| TypeTwo = function() { | |
| function callback() // OK - not a method. | |
| { | |
| return 1; | |
| } | |
| } | |
| TypeTwo.prototype = { | |
| badApiMethodNoAnnotation: function() // ERROR - public method. | |
| { | |
| return 1; | |
| }, | |
| _privateMethod: function() // OK - non-public method. | |
| { | |
| return 1; | |
| }, | |
| methodTwo: function() | |
| { | |
| function callback() // OK - not a method. | |
| { | |
| return 1; | |
| } | |
| }, | |
| /** | |
| * @return {number} | |
| */ | |
| badMethodDoesNotReturnValue: function() // ERROR - does not return value. | |
| { | |
| return; | |
| }, | |
| /** | |
| * @return {number} | |
| */ | |
| badMethodDoesNotReturn: function() // ERROR - does not return. | |
| { | |
| var foo = 1; | |
| }, | |
| /** | |
| * @returns {number} | |
| */ | |
| badMethodReturnsShouldBeReturn: function() // ERROR - @returns, should be @return | |
| { | |
| return 1; | |
| }, | |
| /** | |
| * @returns {number} | |
| */ | |
| badMethodReturnsShouldBeAbsentToo: function() // ERROR - @returns, should be absent | |
| { | |
| return; | |
| }, | |
| /** | |
| * @returns {number} | |
| */ | |
| badMethodReturnsShouldBeAbsent: function() // ERROR - @returns, should be absent | |
| { | |
| var foo = 1; | |
| } | |
| } | |
| /** | |
| * @interface | |
| */ | |
| Interface = function() {} | |
| Interface.prototype = { | |
| /** | |
| * @return {number} | |
| */ | |
| interfaceMethod: function() {}, // OK - interface method. | |
| /** | |
| * @returns {number} | |
| */ | |
| badReturnsInterfaceMethod: function() {} // ERROR - @returns instead of return. | |
| } | |
| /** | |
| * @return {!Object} | |
| */ | |
| function returnConstructedObject() { | |
| /** | |
| * @constructor | |
| */ | |
| TypeThree = function() { | |
| function callback() // OK - not a method. | |
| { | |
| return 1; | |
| } | |
| } | |
| TypeThree.prototype = { | |
| badApiMethodNoAnnotation: function() // ERROR - public method. | |
| { | |
| return 1; | |
| }, | |
| _privateMethod: function() // OK - non-public method. | |
| { | |
| return 1; | |
| }, | |
| methodTwo: function() | |
| { | |
| function callback() // OK - not a method. | |
| { | |
| return 1; | |
| } | |
| }, | |
| /** | |
| * @return {number} | |
| */ | |
| badMethodDoesNotReturnValue: function() // ERROR - does not return value. | |
| { | |
| return; | |
| }, | |
| /** | |
| * @return {number} | |
| */ | |
| badMethodDoesNotReturn: function() // ERROR - does not return. | |
| { | |
| var foo = 1; | |
| }, | |
| /** | |
| * @returns {number} | |
| */ | |
| badMethodReturnsShouldBeReturn: function() // ERROR - @returns, should be @return | |
| { | |
| return 1; | |
| }, | |
| /** | |
| * @returns number | |
| */ | |
| badMethodReturnShouldBeTyped: function() // ERROR - number, not {number} | |
| { | |
| return 1; | |
| }, | |
| /** | |
| * @returns {number} | |
| */ | |
| badMethodReturnsShouldBeAbsentToo: function() // ERROR - @returns, should be absent | |
| { | |
| return; | |
| }, | |
| /** | |
| * @returns {number} | |
| */ | |
| badMethodReturnsShouldBeAbsent: function() // ERROR - @returns, should be absent | |
| { | |
| var foo = 1; | |
| }, | |
| /** | |
| * @param number foo | |
| * @param bar | |
| */ | |
| badMethodParamAnnotations: function(foo, bar) // ERROR - @param's should be well-formed | |
| { | |
| return 1; | |
| } | |
| } | |
| return new TypeThree(); | |
| } | |
| /** | |
| * @param {string} a | |
| * @param {string} b | |
| * @param {string} c | |
| */ | |
| function funcParamsOK1(a, b, c) {} | |
| function funcParamsOK2(a, b, c) {} | |
| /** | |
| * @param {string} a | |
| * @param {string} c | |
| */ | |
| function funcParamsMissingTag1(a, b, c) {} | |
| /** | |
| * @param {string} a | |
| */ | |
| function funcParamsMissingTag2(a, b, c) {} | |
| /** | |
| * @interface | |
| */ | |
| function FuncInterface() | |
| { | |
| } | |
| FuncInterface.prototype = { | |
| /** | |
| * @return {number} | |
| */ | |
| returnNumber: function() { } | |
| } | |
| /** | |
| * @param {string} a | |
| * @param {...number} abc | |
| */ | |
| function funcParamsOK3(a, ...abc) {} |