diff --git a/package.json b/package.json index 2e67cc7e97..32d62aa049 100644 --- a/package.json +++ b/package.json @@ -100,6 +100,7 @@ "openlayers-internal/no-duplicate-requires": 2, "openlayers-internal/no-missing-requires": 1, "openlayers-internal/no-unused-requires": 2, + "openlayers-internal/one-provide": 1, "openlayers-internal/requires-first": 2, "openlayers-internal/valid-requires": 2 } diff --git a/rules/index.js b/rules/index.js index fcd8ddf090..d4f37de7e0 100644 --- a/rules/index.js +++ b/rules/index.js @@ -5,6 +5,7 @@ module.exports = { 'no-duplicate-requires': require('./no-duplicate-requires').rule, 'no-missing-requires': require('./no-missing-requires').rule, 'no-unused-requires': require('./no-unused-requires').rule, + 'one-provide': require('./one-provide').rule, 'requires-first': require('./requires-first').rule, 'valid-requires': require('./valid-requires').rule } diff --git a/rules/one-provide.js b/rules/one-provide.js new file mode 100644 index 0000000000..092a88ee2e --- /dev/null +++ b/rules/one-provide.js @@ -0,0 +1,28 @@ +'use strict'; + +const util = require('./util'); + +exports.rule = { + meta: { + docs: { + description: 'disallow multiple goog.provide() calls' + } + }, + + create: function(context) { + let hasProvide = false; + + return { + ExpressionStatement: function(statement) { + if (util.isProvideStatement(statement)) { + if (hasProvide) { + const name = statement.expression.arguments[0].value; + context.report(statement, `Extra goog.provide('${name}')`); + } else { + hasProvide = true; + } + } + } + }; + } +};