diff --git a/appengine/storage.js b/appengine/storage.js index 4f8a78e8..87d9cae7 100644 --- a/appengine/storage.js +++ b/appengine/storage.js @@ -43,7 +43,7 @@ BlocklyStorage.backupBlocks_ = function(workspace) { /** * Bind the localStorage backup function to the unload event. - * @param {Blockly.WorkspaceSvg} opt_workspace Workspace. + * @param {Blockly.WorkspaceSvg=} opt_workspace Workspace. */ BlocklyStorage.backupOnUnload = function(opt_workspace) { var workspace = opt_workspace || Blockly.getMainWorkspace(); @@ -53,7 +53,7 @@ BlocklyStorage.backupOnUnload = function(opt_workspace) { /** * Restore code blocks from localStorage. - * @param {Blockly.WorkspaceSvg} opt_workspace Workspace. + * @param {Blockly.WorkspaceSvg=} opt_workspace Workspace. */ BlocklyStorage.restoreBlocks = function(opt_workspace) { var url = window.location.href.split('#')[0]; @@ -66,7 +66,7 @@ BlocklyStorage.restoreBlocks = function(opt_workspace) { /** * Save blocks to database and return a link containing key to XML. - * @param {Blockly.WorkspaceSvg} opt_workspace Workspace. + * @param {Blockly.WorkspaceSvg=} opt_workspace Workspace. */ BlocklyStorage.link = function(opt_workspace) { var workspace = opt_workspace || Blockly.getMainWorkspace(); @@ -78,7 +78,7 @@ BlocklyStorage.link = function(opt_workspace) { /** * Retrieve XML text from database using given key. * @param {string} key Key to XML, obtained from href. - * @param {Blockly.WorkspaceSvg} opt_workspace Workspace. + * @param {Blockly.WorkspaceSvg=} opt_workspace Workspace. */ BlocklyStorage.retrieveXml = function(key, opt_workspace) { var workspace = opt_workspace || Blockly.getMainWorkspace(); @@ -87,7 +87,7 @@ BlocklyStorage.retrieveXml = function(key, opt_workspace) { /** * Global reference to current AJAX request. - * @type XMLHttpRequest + * @type {XMLHttpRequest} * @private */ BlocklyStorage.httpRequest_ = null; diff --git a/core/block.js b/core/block.js index e3bf2cb3..bcbd0d23 100644 --- a/core/block.js +++ b/core/block.js @@ -90,38 +90,45 @@ Blockly.Block.prototype.initialize = function(workspace, prototypeName) { * @param {string} prototypeName The typename of the block. */ Blockly.Block.prototype.fill = function(workspace, prototypeName) { - /** @type {?Blockly.Connection} */ + /** @type {Blockly.Connection} */ this.outputConnection = null; - /** @type {?Blockly.Connection} */ + /** @type {Blockly.Connection} */ this.nextConnection = null; - /** @type {?Blockly.Connection} */ + /** @type {Blockly.Connection} */ this.previousConnection = null; - /** @type {Blockly.Input[]} */ + /** @type {!Array.<!Blockly.Input>} */ this.inputList = []; - /** @type {?boolean} */ + /** @type {boolean|undefined} */ this.inputsInline = undefined; /** @type {boolean} */ this.rendered = false; /** @type {boolean} */ this.disabled = false; - /** @type {(string|Function|object)} */ + /** @type {string|!Function} */ this.tooltip = ''; /** @type {boolean} */ this.contextMenu = true; + /** @type {Blockly.Block} */ this.parentBlock_ = null; + /** @type {!Array.<!Blockly.Block>} */ this.childBlocks_ = []; + /** @type {boolean} */ this.deletable_ = true; + /** @type {boolean} */ this.movable_ = true; + /** @type {boolean} */ this.editable_ = true; + /** @type {boolean} */ this.collapsed_ = false; - /** @type {?(string|Blockly.Comment)} */ + /** @type {string|Blockly.Comment} */ this.comment = null; + /** @type {!goog.math.Coordinate} */ this.xy_ = new goog.math.Coordinate(0, 0); - /** @type {Blockly.Workspace} */ + /** @type {!Blockly.Workspace} */ this.workspace = workspace; /** @type {boolean} */ this.isInFlyout = workspace.isFlyout; @@ -130,7 +137,7 @@ Blockly.Block.prototype.fill = function(workspace, prototypeName) { // Copy the type-specific functions and data from the prototype. if (prototypeName) { - /** @type {?string} */ + /** @type {string} */ this.type = prototypeName; var prototype = Blockly.Blocks[prototypeName]; goog.asserts.assertObject(prototype, @@ -142,6 +149,7 @@ Blockly.Block.prototype.fill = function(workspace, prototypeName) { this.init(); } // Record initial inline state. + /** @type {boolean|undefined} */ this.inputsInlineDefault = this.inputsInline; }; @@ -165,7 +173,7 @@ Blockly.Block.getById = function(id, workspace) { * the next statement with the previous statement. Otherwise, dispose of * all children of this block. * @param {boolean} animate If true, show a disposal animation and sound. - * @param {boolean} opt_dontRemoveFromWorkspace If true, don't remove this + * @param {boolean=} opt_dontRemoveFromWorkspace If true, don't remove this * block from the workspace's list of top blocks. */ Blockly.Block.prototype.dispose = function(healStack, animate, @@ -667,8 +675,8 @@ Blockly.Block.prototype.setTitleValue = function(newValue, name) { /** * Set whether this block can chain onto the bottom of another block. * @param {boolean} newBoolean True if there can be a previous statement. - * @param {string|Array.<string>|null} opt_check Statement type or list of - * statement types. Null or undefined if any type could be connected. + * @param {string|Array.<string>|null|undefined} opt_check Statement type or + * list of statement types. Null/undefined if any type could be connected. */ Blockly.Block.prototype.setPreviousStatement = function(newBoolean, opt_check) { if (this.previousConnection) { @@ -696,8 +704,8 @@ Blockly.Block.prototype.setPreviousStatement = function(newBoolean, opt_check) { /** * Set whether another block can chain onto the bottom of this block. * @param {boolean} newBoolean True if there can be a next statement. - * @param {string|Array.<string>|null} opt_check Statement type or list of - * statement types. Null or undefined if any type could be connected. + * @param {string|Array.<string>|null|undefined} opt_check Statement type or + * list of statement types. Null/undefined if any type could be connected. */ Blockly.Block.prototype.setNextStatement = function(newBoolean, opt_check) { if (this.nextConnection) { @@ -723,8 +731,8 @@ Blockly.Block.prototype.setNextStatement = function(newBoolean, opt_check) { /** * Set whether this block returns a value. * @param {boolean} newBoolean True if there is an output. - * @param {string|Array.<string>|null} opt_check Returned type or list of - * returned types. Null or undefined if any type could be returned + * @param {string|Array.<string>|null|undefined} opt_check Returned type or list + * of returned types. Null or undefined if any type could be returned * (e.g. variable get). */ Blockly.Block.prototype.setOutput = function(newBoolean, opt_check) { @@ -848,7 +856,7 @@ Blockly.Block.prototype.setCollapsed = function(collapsed) { /** * Create a human-readable text representation of this block and any children. - * @param {?number} opt_maxLength Truncate the string to this length. + * @param {number=} opt_maxLength Truncate the string to this length. * @return {string} Text of block. */ Blockly.Block.prototype.toString = function(opt_maxLength) { @@ -901,7 +909,7 @@ Blockly.Block.prototype.appendStatementInput = function(name) { /** * Shortcut for appending a dummy input row. - * @param {string} opt_name Language-neutral identifier which may used to find + * @param {string=} opt_name Language-neutral identifier which may used to find * this input again. Should be unique to this block. * @return {!Blockly.Input} The input object created. */ @@ -1171,7 +1179,7 @@ Blockly.Block.prototype.moveNumberedInputBefore = function( /** * Remove an input from this block. * @param {string} name The name of the input. - * @param {boolean} opt_quiet True to prevent error if input is not present. + * @param {boolean=} opt_quiet True to prevent error if input is not present. * @throws {goog.asserts.AssertionError} if the input is not present and * opt_quiet is not true. */ diff --git a/core/block_svg.js b/core/block_svg.js index 67754dc0..38adfd47 100644 --- a/core/block_svg.js +++ b/core/block_svg.js @@ -981,7 +981,7 @@ Blockly.BlockSvg.INNER_BOTTOM_LEFT_CORNER_HIGHLIGHT_LTR = * the next statement with the previous statement. Otherwise, dispose of * all children of this block. * @param {boolean} animate If true, show a disposal animation and sound. - * @param {boolean} opt_dontRemoveFromWorkspace If true, don't remove this + * @param {boolean=} opt_dontRemoveFromWorkspace If true, don't remove this * block from the workspace's list of top blocks. */ Blockly.BlockSvg.prototype.dispose = function(healStack, animate, @@ -1319,7 +1319,7 @@ Blockly.BlockSvg.prototype.removeDragging = function() { /** * Render the block. * Lays out and reflows a block based on its contents and settings. - * @param {boolean} opt_bubble If false, just render this block. + * @param {boolean=} opt_bubble If false, just render this block. * If true, also render block's parent, grandparent, etc. Defaults to true. */ Blockly.BlockSvg.prototype.render = function(opt_bubble) { diff --git a/core/css.js b/core/css.js index ad044940..197f6c86 100644 --- a/core/css.js +++ b/core/css.js @@ -41,21 +41,21 @@ Blockly.Css.Cursor = { /** * Current cursor (cached value). - * @type string + * @type {string} * @private */ Blockly.Css.currentCursor_ = ''; /** * Large stylesheet added by Blockly.Css.inject. - * @type Element + * @type {Element} * @private */ Blockly.Css.styleSheet_ = null; /** * Path to media directory, with any trailing slash removed. - * @type string + * @type {string} * @private */ Blockly.Css.mediaPath_ = ''; diff --git a/core/field_angle.js b/core/field_angle.js index ba2d3a02..a8369f56 100644 --- a/core/field_angle.js +++ b/core/field_angle.js @@ -34,7 +34,7 @@ goog.require('goog.userAgent'); /** * Class for an editable angle field. * @param {string} text The initial content of the field. - * @param {Function} opt_changeHandler An optional function that is called + * @param {Function=} opt_changeHandler An optional function that is called * to validate any constraints on what the user entered. Takes the new * text as an argument and returns the accepted text or null to abort * the change. diff --git a/core/field_checkbox.js b/core/field_checkbox.js index 203c718a..a1c15d39 100644 --- a/core/field_checkbox.js +++ b/core/field_checkbox.js @@ -32,7 +32,7 @@ goog.require('Blockly.Field'); /** * Class for a checkbox field. * @param {string} state The initial state of the field ('TRUE' or 'FALSE'). - * @param {Function} opt_changeHandler A function that is executed when a new + * @param {Function=} opt_changeHandler A function that is executed when a new * option is selected. Its sole argument is the new checkbox state. If * it returns a value, this becomes the new checkbox state, unless the * value is null, in which case the change is aborted. diff --git a/core/field_colour.js b/core/field_colour.js index 7febac56..69781a92 100644 --- a/core/field_colour.js +++ b/core/field_colour.js @@ -36,7 +36,7 @@ goog.require('goog.ui.ColorPicker'); /** * Class for a colour input field. * @param {string} colour The initial colour in '#rrggbb' format. - * @param {Function} opt_changeHandler A function that is executed when a new + * @param {Function=} opt_changeHandler A function that is executed when a new * colour is selected. Its sole argument is the new colour value. Its * return value becomes the selected colour, unless it is undefined, in * which case the new colour stands, or it is null, in which case the change diff --git a/core/field_date.js b/core/field_date.js index e1bc63bb..ffbdf143 100644 --- a/core/field_date.js +++ b/core/field_date.js @@ -39,7 +39,7 @@ goog.require('goog.ui.DatePicker'); /** * Class for a date input field. * @param {string} date The initial date. - * @param {Function} opt_changeHandler A function that is executed when a new + * @param {Function=} opt_changeHandler A function that is executed when a new * date is selected. Its sole argument is the new date value. Its * return value becomes the selected date, unless it is undefined, in * which case the new date stands, or it is null, in which case the change diff --git a/core/field_dropdown.js b/core/field_dropdown.js index c275bf64..a614e944 100644 --- a/core/field_dropdown.js +++ b/core/field_dropdown.js @@ -41,7 +41,7 @@ goog.require('goog.userAgent'); * Class for an editable dropdown field. * @param {(!Array.<!Array.<string>>|!Function)} menuGenerator An array of options * for a dropdown list, or a function which generates these options. - * @param {Function} opt_changeHandler A function that is executed when a new + * @param {Function=} opt_changeHandler A function that is executed when a new * option is selected, with the newly selected value as its sole argument. * If it returns a value, that value (which must be one of the options) will * become selected in place of the newly selected option, unless the return diff --git a/core/field_image.js b/core/field_image.js index 0d569968..6e23bb54 100644 --- a/core/field_image.js +++ b/core/field_image.js @@ -36,7 +36,7 @@ goog.require('goog.userAgent'); * @param {string} src The URL of the image. * @param {number} width Width of the image. * @param {number} height Height of the image. - * @param {?string} opt_alt Optional alt text for when block is collapsed. + * @param {string=} opt_alt Optional alt text for when block is collapsed. * @extends {Blockly.Field} * @constructor */ diff --git a/core/field_textinput.js b/core/field_textinput.js index 8e17740a..858e4bca 100644 --- a/core/field_textinput.js +++ b/core/field_textinput.js @@ -36,7 +36,7 @@ goog.require('goog.userAgent'); /** * Class for an editable text field. * @param {string} text The initial content of the field. - * @param {Function} opt_changeHandler An optional function that is called + * @param {Function=} opt_changeHandler An optional function that is called * to validate any constraints on what the user entered. Takes the new * text as an argument and returns either the accepted text, a replacement * text, or null to abort the change. diff --git a/core/field_variable.js b/core/field_variable.js index 4507a15c..6d0a0dd1 100644 --- a/core/field_variable.js +++ b/core/field_variable.js @@ -36,7 +36,7 @@ goog.require('goog.string'); * Class for a variable's dropdown field. * @param {?string} varname The default name for the variable. If null, * a unique variable name will be generated. - * @param {Function} opt_changeHandler A function that is executed when a new + * @param {Function=} opt_changeHandler A function that is executed when a new * option is selected. Its sole argument is the new option value. * @extends {Blockly.FieldDropdown} * @constructor diff --git a/core/generator.js b/core/generator.js index d274e286..16cbe62c 100644 --- a/core/generator.js +++ b/core/generator.js @@ -51,7 +51,7 @@ Blockly.Generator.NAME_TYPE = 'generated_function'; * Arbitrary code to inject into locations that risk causing infinite loops. * Any instances of '%1' will be replaced by the block ID that failed. * E.g. ' checkTimeout(%1);\n' - * @type ?string + * @type {?string} */ Blockly.Generator.prototype.INFINITE_LOOP_TRAP = null; @@ -59,7 +59,7 @@ Blockly.Generator.prototype.INFINITE_LOOP_TRAP = null; * Arbitrary code to inject before every statement. * Any instances of '%1' will be replaced by the block ID of the statement. * E.g. 'highlight(%1);\n' - * @type ?string + * @type {?string} */ Blockly.Generator.prototype.STATEMENT_PREFIX = null; diff --git a/core/inject.js b/core/inject.js index e2e3aa7d..1d4ad242 100644 --- a/core/inject.js +++ b/core/inject.js @@ -36,7 +36,7 @@ goog.require('goog.userAgent'); /** * Inject a Blockly editor into the specified container element (usually a div). * @param {!Element|string} container Containing element or its ID. - * @param {Object} opt_options Optional dictionary of options. + * @param {Object=} opt_options Optional dictionary of options. * @return {!Blockly.Workspace} Newly created main workspace. */ Blockly.inject = function(container, opt_options) { diff --git a/core/input.js b/core/input.js index f7f96205..044782a1 100644 --- a/core/input.js +++ b/core/input.js @@ -61,7 +61,7 @@ Blockly.Input = function(type, name, block, connection) { /** * Add an item to the end of the input's field row. * @param {string|!Blockly.Field} field Something to add as a field. - * @param {string} opt_name Language-neutral identifier which may used to find + * @param {string=} opt_name Language-neutral identifier which may used to find * this field again. Should be unique to the host block. * @return {!Blockly.Input} The input being append to (to allow chaining). */ @@ -101,7 +101,7 @@ Blockly.Input.prototype.appendField = function(field, opt_name) { /** * Add an item to the end of the input's field row. * @param {*} field Something to add as a field. - * @param {string} opt_name Language-neutral identifier which may used to find + * @param {string=} opt_name Language-neutral identifier which may used to find * this field again. Should be unique to the host block. * @return {!Blockly.Input} The input being append to (to allow chaining). * @deprecated December 2013 diff --git a/core/msg.js b/core/msg.js index f5768c0c..9056885f 100644 --- a/core/msg.js +++ b/core/msg.js @@ -32,7 +32,7 @@ goog.provide('Blockly.Msg'); /** * Back up original getMsg function. - * @type !Function + * @type {!Function} */ goog.getMsgOrig = goog.getMsg; diff --git a/core/procedures.js b/core/procedures.js index 01e2d8c0..d190f066 100644 --- a/core/procedures.js +++ b/core/procedures.js @@ -117,7 +117,7 @@ Blockly.Procedures.findLegalName = function(name, block) { * procedures already defined. * @param {string} name The questionable name. * @param {!Blockly.Workspace} workspace The workspace to scan for collisions. - * @param {Blockly.Block} opt_exclude Optional block to exclude from + * @param {Blockly.Block=} opt_exclude Optional block to exclude from * comparisons (one doesn't want to collide with oneself). * @return {boolean} True if the name is legal. */ diff --git a/core/scrollbar.js b/core/scrollbar.js index 4e107bb6..bf2dd808 100644 --- a/core/scrollbar.js +++ b/core/scrollbar.js @@ -144,7 +144,7 @@ Blockly.ScrollbarPair.prototype.set = function(x, y) { * look or behave like the system's scrollbars. * @param {!Blockly.Workspace} workspace Workspace to bind the scrollbar to. * @param {boolean} horizontal True if horizontal, false if vertical. - * @param {boolean} opt_pair True if the scrollbar is part of a horiz/vert pair. + * @param {boolean=} opt_pair True if the scrollbar is part of a horiz/vert pair. * @constructor */ Blockly.Scrollbar = function(workspace, horizontal, opt_pair) { diff --git a/core/tooltip.js b/core/tooltip.js index ef8dd8d4..af33d4a1 100644 --- a/core/tooltip.js +++ b/core/tooltip.js @@ -108,7 +108,7 @@ Blockly.Tooltip.MARGINS = 5; /** * The HTML container. Set once by Blockly.Tooltip.createDom. - * @type Element + * @type {Element} */ Blockly.Tooltip.DIV = null; diff --git a/core/utils.js b/core/utils.js index 77e1d30f..dd32d0fb 100644 --- a/core/utils.js +++ b/core/utils.js @@ -395,7 +395,7 @@ Blockly.shortestStringLength = function(array) { * Given an array of strings, return the length of the common prefix. * Words may not be split. Any space after a word is included in the length. * @param {!Array.<string>} array Array of strings. - * @param {?number} opt_shortest Length of shortest string. + * @param {number=} opt_shortest Length of shortest string. * @return {number} Length of common prefix. */ Blockly.commonWordPrefix = function(array, opt_shortest) { @@ -430,7 +430,7 @@ Blockly.commonWordPrefix = function(array, opt_shortest) { * Given an array of strings, return the length of the common suffix. * Words may not be split. Any space after a word is included in the length. * @param {!Array.<string>} array Array of strings. - * @param {?number} opt_shortest Length of shortest string. + * @param {number=} opt_shortest Length of shortest string. * @return {number} Length of common suffix. */ Blockly.commonWordSuffix = function(array, opt_shortest) { diff --git a/core/widgetdiv.js b/core/widgetdiv.js index 75485bf7..ff0b55aa 100644 --- a/core/widgetdiv.js +++ b/core/widgetdiv.js @@ -34,21 +34,21 @@ goog.require('goog.dom'); /** * The HTML container. Set once by Blockly.WidgetDiv.createDom. - * @type Element + * @type {Element} */ Blockly.WidgetDiv.DIV = null; /** * The object currently using this container. * @private - * @type Object + * @type {Object} */ Blockly.WidgetDiv.owner_ = null; /** * Optional cleanup function set by whichever object uses the widget. * @private - * @type Function + * @type {Function} */ Blockly.WidgetDiv.dispose_ = null; diff --git a/core/workspace.js b/core/workspace.js index b8cc83c3..b7fe0560 100644 --- a/core/workspace.js +++ b/core/workspace.js @@ -32,7 +32,7 @@ goog.require('goog.math'); /** * Class for a workspace. This is a data structure that contains blocks. * There is no UI, and can be created headlessly. - * @param {Object} opt_options Dictionary of options. + * @param {Object=} opt_options Dictionary of options. * @constructor */ Blockly.Workspace = function(opt_options) { diff --git a/core/workspace_svg.js b/core/workspace_svg.js index 0dcdf06b..e1e63fac 100644 --- a/core/workspace_svg.js +++ b/core/workspace_svg.js @@ -645,7 +645,7 @@ Blockly.WorkspaceSvg.prototype.preloadAudio_ = function() { * Play an audio file at specified value. If volume is not specified, * use full volume (1). * @param {string} name Name of sound. - * @param {?number} opt_volume Volume of sound (0-1). + * @param {number=} opt_volume Volume of sound (0-1). */ Blockly.WorkspaceSvg.prototype.playAudio = function(name, opt_volume) { var sound = this.SOUNDS_[name]; diff --git a/demos/blockfactory/factory.js b/demos/blockfactory/factory.js index 3bc0b9f4..ae215cd0 100644 --- a/demos/blockfactory/factory.js +++ b/demos/blockfactory/factory.js @@ -25,13 +25,13 @@ /** * Workspace for user to build block. - * @type Blockly.Workspace + * @type {Blockly.Workspace} */ var mainWorkspace = null; /** * Workspace for preview of block. - * @type Blockly.Workspace + * @type {Blockly.Workspace} */ var previewWorkspace = null; diff --git a/demos/code/code.js b/demos/code/code.js index d0727fee..09d24739 100644 --- a/demos/code/code.js +++ b/demos/code/code.js @@ -82,7 +82,7 @@ Code.LANGUAGE_RTL = ['ar', 'fa', 'he']; /** * Blockly's main workspace. - * @type Blockly.WorkspaceSvg + * @type {Blockly.WorkspaceSvg} */ Code.workspace = null; @@ -235,7 +235,7 @@ Code.getBBox_ = function(element) { /** * User's language (e.g. "en"). - * @type string + * @type {string} */ Code.LANG = Code.getLang(); diff --git a/demos/graph/index.html b/demos/graph/index.html index 7fdf907b..daa318e5 100644 --- a/demos/graph/index.html +++ b/demos/graph/index.html @@ -176,20 +176,20 @@ var Graph = {}; /** * Main Blockly workspace. - * @type Blockly.WorkspaceSvg + * @type {Blockly.WorkspaceSvg} */ Graph.workspace = null; /** * Cached copy of the function string. - * @type ?string + * @type {?string} * @private */ Graph.oldFormula_ = null; /** * Drawing options for the Chart API. - * @type !Object + * @type {!Object} * @private */ Graph.options_ = { diff --git a/demos/plane/plane.js b/demos/plane/plane.js index bc2cd164..c931c68d 100644 --- a/demos/plane/plane.js +++ b/demos/plane/plane.js @@ -76,7 +76,7 @@ Plane.LANGUAGE_RTL = ['ar', 'fa', 'he']; /** * Main Blockly workspace. - * @type Blockly.WorkspaceSvg + * @type {Blockly.WorkspaceSvg} */ Plane.workspace = null; @@ -201,7 +201,7 @@ Plane.getMsg = function(key) { /** * User's language (e.g. "en"). - * @type string + * @type {string} */ Plane.LANG = Plane.getLang(); diff --git a/demos/plane/slider.js b/demos/plane/slider.js index 7fa949c2..2df67b83 100644 --- a/demos/plane/slider.js +++ b/demos/plane/slider.js @@ -30,7 +30,7 @@ * @param {number} y The vertical offset of the slider. * @param {number} width The total width of the slider. * @param {!Element} svgParent The SVG element to append the slider to. - * @param {Function} opt_changeFunc Optional callback function that will be + * @param {Function=} opt_changeFunc Optional callback function that will be * called when the slider is moved. The current value is passed. * @constructor */ diff --git a/generators/dart.js b/generators/dart.js index d660b645..b3c1c255 100644 --- a/generators/dart.js +++ b/generators/dart.js @@ -31,7 +31,7 @@ goog.require('Blockly.Generator'); /** * Dart code generator. - * @type !Blockly.Generator + * @type {!Blockly.Generator} */ Blockly.Dart = new Blockly.Generator('Dart'); diff --git a/generators/javascript.js b/generators/javascript.js index 79e14256..2652186c 100644 --- a/generators/javascript.js +++ b/generators/javascript.js @@ -31,7 +31,7 @@ goog.require('Blockly.Generator'); /** * JavaScript code generator. - * @type !Blockly.Generator + * @type {!Blockly.Generator} */ Blockly.JavaScript = new Blockly.Generator('JavaScript'); diff --git a/generators/php.js b/generators/php.js index d40a1e0b..bf83ab9c 100644 --- a/generators/php.js +++ b/generators/php.js @@ -31,7 +31,7 @@ goog.require('Blockly.Generator'); /** * PHP code generator. - * @type !Blockly.Generator + * @type {!Blockly.Generator} */ Blockly.PHP = new Blockly.Generator('PHP'); diff --git a/generators/python.js b/generators/python.js index a0189690..54b85736 100644 --- a/generators/python.js +++ b/generators/python.js @@ -31,7 +31,7 @@ goog.require('Blockly.Generator'); /** * Python code generator. - * @type !Blockly.Generator + * @type {!Blockly.Generator} */ Blockly.Python = new Blockly.Generator('Python');