Bug 1245649: Turn on no-extra-semi. r=markh
authorDave Townsend <dtownsend@oxymoronical.com>
Wed, 03 Feb 2016 17:27:36 -0800
changeset 283275 cb217f7271c24838782ff4f772af29a7ba9f53e8
parent 283274 06982056b5a5cb566eb836d53283b545a927de29
child 283276 8b6ee0350b2cd5d8b583c3aa7e6844ee070b1c93
push id71491
push userphilringnalda@gmail.com
push dateSat, 06 Feb 2016 03:42:29 +0000
treeherdermozilla-inbound@3c3e39e9becc [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmarkh
bugs1245649
milestone47.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1245649: Turn on no-extra-semi. r=markh
browser/base/content/aboutaccounts/aboutaccounts.js
browser/base/content/browser.js
browser/base/content/tabbrowser.xml
browser/components/customizableui/CustomizableUI.jsm
browser/components/customizableui/CustomizableWidgets.jsm
browser/components/customizableui/CustomizeMode.jsm
browser/components/customizableui/test/browser_934951_zoom_in_toolbar.js
browser/components/customizableui/test/browser_989338_saved_placements_not_resaved.js
browser/components/customizableui/test/browser_992747_toggle_noncustomizable_toolbar.js
browser/components/customizableui/test/head.js
browser/components/places/tests/unit/test_browserGlue_urlbar_defaultbehavior_migration.js
browser/components/search/test/browser_426329.js
browser/components/syncedtabs/SyncedTabsDeckComponent.js
browser/components/syncedtabs/SyncedTabsDeckStore.js
browser/components/syncedtabs/SyncedTabsListStore.js
browser/components/syncedtabs/TabListView.js
browser/components/syncedtabs/test/browser/browser_sidebar_syncedtabslist.js
browser/components/uitour/test/browser_UITour_defaultBrowser.js
browser/components/uitour/test/browser_no_tabs.js
browser/experiments/Experiments.jsm
browser/extensions/pocket/bootstrap.js
browser/extensions/pocket/content/main.js
browser/extensions/pocket/content/pktApi.jsm
browser/modules/Social.jsm
browser/modules/test/xpcshell/test_DirectoryLinksProvider.js
browser/modules/webrtcUI.jsm
browser/tools/mozscreenshots/mozscreenshots/extension/Screenshot.jsm
toolkit/.eslintrc
toolkit/components/addoncompat/CompatWarning.jsm
toolkit/components/apppicker/content/appPicker.js
toolkit/components/asyncshutdown/AsyncShutdown.jsm
toolkit/components/asyncshutdown/nsAsyncShutdown.js
toolkit/components/asyncshutdown/tests/xpcshell/test_converters.js
toolkit/components/crashmonitor/nsCrashMonitor.js
toolkit/components/ctypes/tests/unit/test_jsctypes.js
toolkit/components/filewatcher/tests/xpcshell/head.js
toolkit/components/formautofill/test/chrome/loader.js
toolkit/components/formautofill/test/loader_common.js
toolkit/components/microformats/test/static/javascript/chai.js
toolkit/components/microformats/test/static/javascript/mocha.js
toolkit/components/microformats/test/static/javascript/testrunner.js
toolkit/components/microformats/tests/test_Microformats_adr.html
toolkit/components/microformats/tests/test_Microformats_geo.html
toolkit/components/microformats/tests/test_Microformats_hCalendar.html
toolkit/components/microformats/tests/test_Microformats_hCard.html
toolkit/components/places/UnifiedComplete.js
toolkit/components/places/nsPlacesAutoComplete.js
toolkit/components/places/tests/autocomplete/head_autocomplete.js
toolkit/components/places/tests/browser/browser_favicon_privatebrowsing_perwindowpb.js
toolkit/components/places/tests/browser/browser_favicon_setAndFetchFaviconForPage.js
toolkit/components/places/tests/browser/browser_favicon_setAndFetchFaviconForPage_failures.js
toolkit/components/places/tests/browser/browser_visituri_privatebrowsing_perwindowpb.js
toolkit/components/places/tests/browser/head.js
toolkit/components/places/tests/expiration/test_outdated_analyze.js
toolkit/components/places/tests/favicons/test_replaceFaviconData.js
toolkit/components/places/tests/favicons/test_replaceFaviconDataFromDataURL.js
toolkit/components/places/tests/head_common.js
toolkit/components/places/tests/history/test_remove.js
toolkit/components/places/tests/test_bug_461710_perwindowpb.html
toolkit/components/places/tests/unit/test_async_history_api.js
toolkit/components/places/tests/unit/test_download_history.js
toolkit/components/promiseworker/PromiseWorker.jsm
toolkit/components/promiseworker/worker/PromiseWorker.js
toolkit/components/prompts/src/SharedPromptUtils.jsm
toolkit/components/satchel/test/browser/browser_privbrowsing_perwindowpb.js
toolkit/components/satchel/test/unit/test_async_expire.js
toolkit/components/satchel/test/unit/test_notify.js
toolkit/components/search/tests/xpcshell/test_SearchStaticData.js
toolkit/components/social/test/browser/browser_workerAPI.js
toolkit/components/telemetry/TelemetryEnvironment.jsm
toolkit/components/telemetry/TelemetrySession.jsm
toolkit/components/telemetry/TelemetryStorage.jsm
toolkit/components/telemetry/ThirdPartyCookieProbe.jsm
toolkit/components/telemetry/tests/unit/test_TelemetryEnvironment.js
toolkit/components/thumbnails/PageThumbUtils.jsm
toolkit/content/aboutTelemetry.js
toolkit/content/aboutwebrtc/aboutWebrtc.js
toolkit/content/customizeToolbar.js
toolkit/content/widgets/notification.xml
toolkit/content/widgets/resizer.xml
toolkit/crashreporter/test/unit/test_crash_AsyncShutdown.js
toolkit/crashreporter/test/unit/test_crash_terminator.js
toolkit/identity/Sandbox.jsm
toolkit/identity/tests/unit/head_identity.js
toolkit/identity/tests/unit/test_jwcrypto.js
toolkit/modules/Finder.jsm
toolkit/modules/Log.jsm
toolkit/modules/Sntp.jsm
toolkit/modules/Task.jsm
toolkit/modules/tests/browser/browser_Finder.js
toolkit/mozapps/extensions/AddonManager.jsm
toolkit/mozapps/extensions/internal/AddonRepository_SQLiteMigrator.jsm
toolkit/mozapps/extensions/internal/XPIProvider.jsm
toolkit/mozapps/extensions/internal/XPIProviderUtils.js
toolkit/mozapps/extensions/test/browser/browser_searching.js
toolkit/mozapps/extensions/test/xpcshell/test_DeferredSave.js
toolkit/mozapps/extensions/test/xpcshell/test_bug659772.js
toolkit/mozapps/extensions/test/xpcshell/test_gmpProvider.js
toolkit/mozapps/extensions/test/xpcshell/test_no_addons.js
toolkit/mozapps/extensions/test/xpcshell/test_provider_markSafe.js
toolkit/mozapps/extensions/test/xpcshell/test_provider_shutdown.js
toolkit/mozapps/extensions/test/xpcshell/test_provider_unsafe_access_shutdown.js
toolkit/mozapps/extensions/test/xpcshell/test_provider_unsafe_access_startup.js
--- a/browser/base/content/aboutaccounts/aboutaccounts.js
+++ b/browser/base/content/aboutaccounts/aboutaccounts.js
@@ -22,21 +22,21 @@ const ACTION_URL_PARAM = "action";
 
 const OBSERVER_TOPICS = [
   fxAccountsCommon.ONVERIFIED_NOTIFICATION,
   fxAccountsCommon.ONLOGOUT_NOTIFICATION,
 ];
 
 function log(msg) {
   //dump("FXA: " + msg + "\n");
-};
+}
 
 function error(msg) {
   console.log("Firefox Account Error: " + msg + "\n");
-};
+}
 
 function getPreviousAccountNameHash() {
   try {
     return Services.prefs.getComplexValue(PREF_LAST_FXA_USER, Ci.nsISupportsString).data;
   } catch (_) {
     return "";
   }
 }
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -3024,17 +3024,17 @@ function populateMirrorTabMenu(popup) {
   let services = CastingApps.getServicesForMirroring();
   services.forEach(service => {
     let item = doc.createElement("menuitem");
     item.setAttribute("label", service.friendlyName);
     item._service = service;
     item.addEventListener("command", mirrorMenuItemClicked);
     popup.appendChild(item);
   });
-};
+}
 
 function getWebNavigation()
 {
   return gBrowser.webNavigation;
 }
 
 function BrowserReloadWithFlags(reloadFlags) {
   let url = gBrowser.currentURI.spec;
@@ -5496,17 +5496,17 @@ function handleDroppedLink(event, url, n
     if (data.url &&
         lastLocationChange == gBrowser.selectedBrowser.lastLocationChange)
       loadURI(data.url, null, data.postData, false);
   });
 
   // Keep the event from being handled by the dragDrop listeners
   // built-in to gecko if they happen to be above us.
   event.preventDefault();
-};
+}
 
 function BrowserSetForcedCharacterSet(aCharset)
 {
   if (aCharset) {
     gBrowser.selectedBrowser.characterSet = aCharset;
     // Save the forced character-set
     if (!PrivateBrowsingUtils.isWindowPrivate(window))
       PlacesUtils.setCharsetForURI(getWebNavigation().currentURI, aCharset);
@@ -7184,24 +7184,24 @@ var gIdentityHandler = {
   }
 };
 
 function getNotificationBox(aWindow) {
   var foundBrowser = gBrowser.getBrowserForDocument(aWindow.document);
   if (foundBrowser)
     return gBrowser.getNotificationBox(foundBrowser)
   return null;
-};
+}
 
 function getTabModalPromptBox(aWindow) {
   var foundBrowser = gBrowser.getBrowserForDocument(aWindow.document);
   if (foundBrowser)
     return gBrowser.getTabModalPromptBox(foundBrowser);
   return null;
-};
+}
 
 /* DEPRECATED */
 function getBrowser() {
   return gBrowser;
 }
 function getNavToolbox() {
   return gNavToolbox;
 }
--- a/browser/base/content/tabbrowser.xml
+++ b/browser/base/content/tabbrowser.xml
@@ -5375,17 +5375,17 @@
           }
 
           // For telemetry, the first frame interval is not useful since it may represent an interval
           // to a relatively old frame (prior to recording start). So we'll ignore it for the average.
           if (frameCount > 1) {
             let averageInterval = 0;
             for (let i = 1; i < frameCount; i++) {
               averageInterval += intervals[i];
-            };
+            }
             averageInterval = averageInterval / (frameCount - 1);
 
             Services.telemetry.getHistogramById("FX_TAB_ANIM_ANY_FRAME_INTERVAL_MS").add(averageInterval);
 
             if (aTab._recordingTabOpenPlain) {
               delete aTab._recordingTabOpenPlain;
               // While we do have a telemetry probe NEWTAB_PAGE_ENABLED to monitor newtab preview, it'll be
               // easier to overview the data without slicing by it. Hence the additional histograms with _PREVIEW.
--- a/browser/components/customizableui/CustomizableUI.jsm
+++ b/browser/components/customizableui/CustomizableUI.jsm
@@ -4157,17 +4157,17 @@ OverflowableToolbar.prototype = {
 
         this._list.insertBefore(child, this._list.firstChild);
         if (!this._toolbar.hasAttribute("overflowing")) {
           CustomizableUI.addListener(this);
         }
         this._toolbar.setAttribute("overflowing", "true");
       }
       child = prevChild;
-    };
+    }
 
     let win = this._target.ownerDocument.defaultView;
     win.UpdateUrlbarSearchSplitterState();
   },
 
   _onResize: function(aEvent) {
     if (!this._lazyResizeHandler) {
       this._lazyResizeHandler = new DeferredTask(this._onLazyResize.bind(this),
--- a/browser/components/customizableui/CustomizableWidgets.jsm
+++ b/browser/components/customizableui/CustomizableWidgets.jsm
@@ -723,17 +723,17 @@ const CustomizableWidgets = [
         // tabbrowser. This breaks the zoom toolkit code (see bug 897410). Don't let that happen:
         let zoomFactor = 100;
         try {
           zoomFactor = Math.round(window.ZoomManager.zoom * 100);
         } catch (e) {}
         zoomResetButton.setAttribute("label", CustomizableUI.getLocalizedProperty(
           buttons[1], "label", [updateDisplay ? zoomFactor : 100]
         ));
-      };
+      }
 
       // Register ourselves with the service so we know when the zoom prefs change.
       Services.obs.addObserver(updateZoomResetButton, "browser-fullZoom:zoomChange", false);
       Services.obs.addObserver(updateZoomResetButton, "browser-fullZoom:zoomReset", false);
       Services.obs.addObserver(updateZoomResetButton, "browser-fullZoom:location-change", false);
 
       if (inPanel) {
         let panel = aDocument.getElementById(kPanelId);
--- a/browser/components/customizableui/CustomizeMode.jsm
+++ b/browser/components/customizableui/CustomizeMode.jsm
@@ -77,17 +77,17 @@ function CustomizeMode(aWindow) {
     let lwthemeButton = this.document.getElementById("customization-lwtheme-button");
     lwthemeButton.setAttribute("hidden", "true");
   }
   if (AppConstants.CAN_DRAW_IN_TITLEBAR) {
     this._updateTitlebarButton();
     Services.prefs.addObserver(kDrawInTitlebarPref, this, false);
   }
   this.window.addEventListener("unload", this);
-};
+}
 
 CustomizeMode.prototype = {
   _changed: false,
   _transitioning: false,
   window: null,
   document: null,
   // areas is used to cache the customizable areas when in customization mode.
   areas: null,
--- a/browser/components/customizableui/test/browser_934951_zoom_in_toolbar.js
+++ b/browser/components/customizableui/test/browser_934951_zoom_in_toolbar.js
@@ -58,17 +58,17 @@ add_task(function*() {
 });
 
 function promiseObserverNotification(aObserver) {
   let deferred = Promise.defer();
   function notificationCallback(e) {
     Services.obs.removeObserver(notificationCallback, aObserver, false);
     clearTimeout(timeoutId);
     deferred.resolve();
-  };
+  }
   let timeoutId = setTimeout(() => {
     Services.obs.removeObserver(notificationCallback, aObserver, false);
     deferred.reject("Notification '" + aObserver + "' did not happen within 20 seconds.");
   }, kTimeoutInMS);
   Services.obs.addObserver(notificationCallback, aObserver, false);
   return deferred.promise;
 }
 
@@ -78,12 +78,12 @@ function promiseTabSelect() {
   let timeoutId = setTimeout(() => {
     container.removeEventListener("TabSelect", callback);
     deferred.reject("TabSelect did not happen within 20 seconds");
   }, kTimeoutInMS);
   function callback(e) {
     container.removeEventListener("TabSelect", callback);
     clearTimeout(timeoutId);
     executeSoon(deferred.resolve);
-  };
+  }
   container.addEventListener("TabSelect", callback);
   return deferred.promise;
 }
--- a/browser/components/customizableui/test/browser_989338_saved_placements_not_resaved.js
+++ b/browser/components/customizableui/test/browser_989338_saved_placements_not_resaved.js
@@ -33,17 +33,17 @@ function test() {
   ok(!backstagePass.gPlacements.has(AREAID), "Placements map shouldn't have been affected");
 
   let savedNavbar = Array.isArray(newSavedState.placements[CustomizableUI.AREA_NAVBAR]);
   ok(savedNavbar, "Should have saved nav-bar contents");
   if (savedNavbar) {
     placementArraysEqual(CustomizableUI.AREA_NAVBAR, newSavedState.placements[CustomizableUI.AREA_NAVBAR],
                          CustomizableUI.getWidgetIdsInArea(CustomizableUI.AREA_NAVBAR));
   }
-};
+}
 
 registerCleanupFunction(function() {
   let backstagePass = Cu.import("resource:///modules/CustomizableUI.jsm", {});
   if (!hadSavedState) {
     backstagePass.gSavedState = null;
   } else {
     let savedPlacements = backstagePass.gSavedState.placements;
     delete savedPlacements[AREAID];
--- a/browser/components/customizableui/test/browser_992747_toggle_noncustomizable_toolbar.js
+++ b/browser/components/customizableui/test/browser_992747_toggle_noncustomizable_toolbar.js
@@ -17,10 +17,10 @@ function test() {
   is(tb.getAttribute("collapsed"), "true", "Toolbar should be collapsed");
   try {
     CustomizableUI.setToolbarVisibility(TOOLBARID, true);
   } catch (ex) {
     ok(false, "Should not throw exceptions trying to set toolbar visibility.");
   }
   is(tb.getAttribute("collapsed"), "false", "Toolbar should be uncollapsed");
   tb.remove();
-};
+}
 
--- a/browser/components/customizableui/test/head.js
+++ b/browser/components/customizableui/test/head.js
@@ -284,17 +284,17 @@ function promisePanelElementShown(win, a
   let deferred = Promise.defer();
   let timeoutId = win.setTimeout(() => {
     deferred.reject("Panel did not show within 20 seconds.");
   }, 20000);
   function onPanelOpen(e) {
     aPanel.removeEventListener("popupshown", onPanelOpen);
     win.clearTimeout(timeoutId);
     deferred.resolve();
-  };
+  }
   aPanel.addEventListener("popupshown", onPanelOpen);
   return deferred.promise;
 }
 
 function promisePanelHidden(win) {
   let panelEl = win.PanelUI.panel;
   return promisePanelElementHidden(win, panelEl);
 }
@@ -327,32 +327,32 @@ function subviewShown(aSubview) {
   let win = aSubview.ownerDocument.defaultView;
   let timeoutId = win.setTimeout(() => {
     deferred.reject("Subview (" + aSubview.id + ") did not show within 20 seconds.");
   }, 20000);
   function onViewShowing(e) {
     aSubview.removeEventListener("ViewShowing", onViewShowing);
     win.clearTimeout(timeoutId);
     deferred.resolve();
-  };
+  }
   aSubview.addEventListener("ViewShowing", onViewShowing);
   return deferred.promise;
 }
 
 function subviewHidden(aSubview) {
   let deferred = Promise.defer();
   let win = aSubview.ownerDocument.defaultView;
   let timeoutId = win.setTimeout(() => {
     deferred.reject("Subview (" + aSubview.id + ") did not hide within 20 seconds.");
   }, 20000);
   function onViewHiding(e) {
     aSubview.removeEventListener("ViewHiding", onViewHiding);
     win.clearTimeout(timeoutId);
     deferred.resolve();
-  };
+  }
   aSubview.addEventListener("ViewHiding", onViewHiding);
   return deferred.promise;
 }
 
 function waitForCondition(aConditionFn, aMaxTries=50, aCheckInterval=100) {
   function tryNow() {
     tries++;
     if (aConditionFn()) {
@@ -500,17 +500,17 @@ function popupHidden(aPopup) {
 function promisePopupEvent(aPopup, aEventSuffix) {
   let deferred = Promise.defer();
   let win = aPopup.ownerDocument.defaultView;
   let eventType = "popup" + aEventSuffix;
 
   function onPopupEvent(e) {
     aPopup.removeEventListener(eventType, onPopupEvent);
     deferred.resolve();
-  };
+  }
 
   aPopup.addEventListener(eventType, onPopupEvent);
   return deferred.promise;
 }
 
 // This is a simpler version of the context menu check that
 // exists in contextmenu_common.js.
 function checkContextMenu(aContextMenu, aExpectedEntries, aWindow=window) {
--- a/browser/components/places/tests/unit/test_browserGlue_urlbar_defaultbehavior_migration.js
+++ b/browser/components/places/tests/unit/test_browserGlue_urlbar_defaultbehavior_migration.js
@@ -9,38 +9,38 @@ const DEFAULT_BEHAVIOR_PREF = "browser.u
 const AUTOCOMPLETE_PREF = "browser.urlbar.autocomplete.enabled";
 
 var gBrowserGlue = Cc["@mozilla.org/browser/browserglue;1"]
                      .getService(Ci.nsIObserver);
 var gGetBoolPref = Services.prefs.getBoolPref;
 
 function run_test() {
   run_next_test();
-};
+}
 
 do_register_cleanup(cleanup);
 
 function cleanup() {
   let prefix = "browser.urlbar.suggest.";
   for (let type of ["history", "bookmark", "openpage", "history.onlyTyped"]) {
     Services.prefs.clearUserPref(prefix + type);
   }
   Services.prefs.clearUserPref("browser.migration.version");
   Services.prefs.clearUserPref(AUTOCOMPLETE_PREF);
-};
+}
 
 function setupBehaviorAndMigrate(aDefaultBehavior, aAutocompleteEnabled = true) {
   cleanup();
   // Migrate browser.urlbar.default.behavior preference.
   Services.prefs.setIntPref("browser.migration.version", UI_VERSION - 1);
   Services.prefs.setIntPref(DEFAULT_BEHAVIOR_PREF, aDefaultBehavior);
   Services.prefs.setBoolPref(AUTOCOMPLETE_PREF, aAutocompleteEnabled);
   // Simulate a migration.
   gBrowserGlue.observe(null, TOPIC_BROWSERGLUE_TEST, TOPICDATA_BROWSERGLUE_TEST);
-};
+}
 
 add_task(function*() {
   do_print("Migrate default.behavior = 0");
   setupBehaviorAndMigrate(0);
 
   Assert.ok(gGetBoolPref("browser.urlbar.suggest.history"),
     "History preference should be true.");
   Assert.ok(gGetBoolPref("browser.urlbar.suggest.bookmark"),
--- a/browser/components/search/test/browser_426329.js
+++ b/browser/components/search/test/browser_426329.js
@@ -81,34 +81,34 @@ function promiseSetEngine() {
                              "anonid", "search-go-button");
           ok(searchButton, "got search-go-button");
           searchBar.value = "test";
 
           Services.obs.removeObserver(observer, "browser-search-engine-modified");
           resolve();
           break;
       }
-    };
+    }
 
     Services.obs.addObserver(observer, "browser-search-engine-modified", false);
     ss.addEngine("http://mochi.test:8888/browser/browser/components/search/test/426329.xml",
                  null, "data:image/x-icon,%00", false);
   });
 }
 
 function promiseRemoveEngine() {
   return new Promise(resolve => {
     var ss = Services.search;
 
     function observer(aSub, aTopic, aData) {
       if (aData == "engine-removed") {
         Services.obs.removeObserver(observer, "browser-search-engine-modified");
         resolve();
       }
-    };
+    }
 
     Services.obs.addObserver(observer, "browser-search-engine-modified", false);
     var engine = ss.getEngineByName("Bug 426329");
     ss.removeEngine(engine);
   });
 }
 
 
--- a/browser/components/syncedtabs/SyncedTabsDeckComponent.js
+++ b/browser/components/syncedtabs/SyncedTabsDeckComponent.js
@@ -46,17 +46,17 @@ function SyncedTabsDeckComponent({
   this._deckStore = deckStore || new SyncedTabsDeckStore();
   this._syncedTabsListStore = listStore || new SyncedTabsListStore(SyncedTabs);
   this.tabListComponent = listComponent || new TabListComponent({
     window: this._window,
     store: this._syncedTabsListStore,
     View: TabListView,
     SyncedTabs: SyncedTabs
   });
-};
+}
 
 SyncedTabsDeckComponent.prototype = {
   PANELS: {
     TABS_CONTAINER: "tabs-container",
     TABS_FETCHING: "tabs-fetching",
     NOT_AUTHED_INFO: "notAuthedInfo",
     SINGLE_DEVICE_INFO: "singleDeviceInfo",
     TABS_DISABLED: "tabs-disabled",
--- a/browser/components/syncedtabs/SyncedTabsDeckStore.js
+++ b/browser/components/syncedtabs/SyncedTabsDeckStore.js
@@ -19,17 +19,17 @@ this.EXPORTED_SYMBOLS = [
  * one is selected. The view listens for change events on the store, which are
  * triggered whenever the state changes. If it's a small change, the state
  * will have `isUpdatable` set to true so the view can skip rerendering the whole
  * DOM.
  */
 function SyncedTabsDeckStore() {
   EventEmitter.call(this);
   this._panels = [];
-};
+}
 
 Object.assign(SyncedTabsDeckStore.prototype, EventEmitter.prototype, {
   _change(isUpdatable = false) {
     let panels = this._panels.map(panel => {
       return {id: panel, selected: panel === this._selectedPanel};
     });
     this.emit("change", {panels, isUpdatable: isUpdatable});
   },
--- a/browser/components/syncedtabs/SyncedTabsListStore.js
+++ b/browser/components/syncedtabs/SyncedTabsListStore.js
@@ -22,17 +22,17 @@ this.EXPORTED_SYMBOLS = [
 function SyncedTabsListStore(SyncedTabs) {
   EventEmitter.call(this);
   this._SyncedTabs = SyncedTabs;
   this.data = [];
   this._closedClients = {};
   this._selectedRow = [-1, -1];
   this.filter = "";
   this.inputFocused = false;
-};
+}
 
 Object.assign(SyncedTabsListStore.prototype, EventEmitter.prototype, {
   // This internal method triggers the "change" event that views
   // listen for. It denormalizes the state so that it's easier for
   // the view to deal with. updateType hints to the view what
   // actually needs to be rerendered or just updated, and can be
   // empty (to (re)render everything), "searchbox" (to rerender just the tab list),
   // or "all" (to skip rendering and just update all attributes of existing nodes).
--- a/browser/components/syncedtabs/TabListView.js
+++ b/browser/components/syncedtabs/TabListView.js
@@ -38,17 +38,17 @@ function TabListView(window, props) {
   this._tabsContainerTemplate = this._doc.getElementById("tabs-container-template");
   this._clientTemplate = this._doc.getElementById("client-template");
   this._emptyClientTemplate = this._doc.getElementById("empty-client-template");
   this._tabTemplate = this._doc.getElementById("tab-template");
 
   this.container = this._doc.createElement("div");
 
   this._setupContextMenu();
-};
+}
 
 TabListView.prototype = {
   render(state) {
     // Don't rerender anything; just update attributes, e.g. selection
     if (state.canUpdateAll) {
       this._update(state);
       return;
     }
--- a/browser/components/syncedtabs/test/browser/browser_sidebar_syncedtabslist.js
+++ b/browser/components/syncedtabs/test/browser/browser_sidebar_syncedtabslist.js
@@ -253,10 +253,10 @@ function checkItem(node, item) {
     // client items
     Assert.equal(node.querySelector(".item-title").textContent, item.name,
       "Node's title element's text should match client name");
     Assert.ok(node.classList.contains("client"),
       "Node should have .client class");
     Assert.equal(node.dataset.id, item.id,
       "Node's ID should match item ID");
   }
-};
+}
 
--- a/browser/components/uitour/test/browser_UITour_defaultBrowser.js
+++ b/browser/components/uitour/test/browser_UITour_defaultBrowser.js
@@ -4,17 +4,17 @@ var gTestTab;
 var gContentAPI;
 var gContentWindow;
 var setDefaultBrowserCalled = false;
 
 Cc["@mozilla.org/moz/jssubscript-loader;1"]
   .getService(Ci.mozIJSSubScriptLoader)
   .loadSubScript("chrome://mochikit/content/tests/SimpleTest/MockObjects.js", this);
 
-function MockShellService() {};
+function MockShellService() {}
 MockShellService.prototype = {
   QueryInterface: XPCOMUtils.generateQI([Ci.nsIShellService]),
   isDefaultBrowser: function(aStartupCheck, aForAllTypes) { return false; },
   setDefaultBrowser: function(aClaimAllTypes, aForAllUsers) {
     setDefaultBrowserCalled = true;
   },
   shouldCheckDefaultBrowser: false,
   canSetDesktopBackground: false,
--- a/browser/components/uitour/test/browser_no_tabs.js
+++ b/browser/components/uitour/test/browser_no_tabs.js
@@ -39,17 +39,17 @@ function createHiddenBrowser(aURL) {
  *        The browser to dismiss.
  */
 function destroyHiddenBrowser(aFrame, aBrowser) {
   // Dispose of the hidden browser.
   aBrowser.remove();
 
   // Take care of the frame holding our invisible browser.
   aFrame.destroy();
-};
+}
 
 /**
  * Test that UITour works when called when no tabs are available (e.g., when using windowless
  * browsers).
  */
 add_task(function* test_windowless_UITour(){
   // Get the URL for the test page.
   let pageURL = getRootDirectory(gTestPath) + "uitour.html";
--- a/browser/experiments/Experiments.jsm
+++ b/browser/experiments/Experiments.jsm
@@ -1515,17 +1515,17 @@ Experiments.ExperimentEntry.prototype = 
       }
     }
 
     for (let key of this.SERIALIZE_KEYS) {
       if (!(key in data) && !this.DATE_KEYS.has(key)) {
         this._log.error("initFromCacheData() - missing required key " + key);
         return false;
       }
-    };
+    }
 
     if (!this._isManifestDataValid(data._manifestData)) {
       return false;
     }
 
     // Dates are restored separately from epoch ms, everything else is just
     // copied in.
 
--- a/browser/extensions/pocket/bootstrap.js
+++ b/browser/extensions/pocket/bootstrap.js
@@ -199,17 +199,17 @@ function CreatePocketWidget(reason) {
                   createInstance(Ci.nsISupportsString);
         str.data = JSON.stringify(provider.manifest);
         Services.prefs.setComplexValue(pref, Ci.nsISupportsString, str);
         SocialService.uninstallProvider(origin, () => {});
       }
     }
   });
 
-};
+}
 
 // PocketContextMenu
 // When the context menu is opened check if we need to build and enable pocket UI.
 var PocketContextMenu = {
   init: function() {
     Services.obs.addObserver(this, "on-build-contextmenu", false);
   },
   shutdown: function() {
@@ -221,17 +221,17 @@ var PocketContextMenu = {
       for (let id in ["context-pocket", "context-savelinktopocket"]) {
         let element = document.getElementById(id);
         if (element)
           element.remove();
       }
     }
   },
   observe: function(aSubject, aTopic, aData) {
-    let subject = aSubject.wrappedJSObject;;
+    let subject = aSubject.wrappedJSObject;
     let document = subject.menu.ownerDocument;
     let window = document.defaultView;
     let pocketEnabled = CustomizableUI.getPlacementOfWidget("pocket-button");
 
     let showSaveCurrentPageToPocket = !(subject.onTextInput || subject.onLink ||
                                         subject.isContentSelected || subject.onImage ||
                                         subject.onCanvas || subject.onVideo || subject.onAudio);
     let targetUrl = subject.onLink ? subject.linkUrl : subject.pageUrl;
--- a/browser/extensions/pocket/content/main.js
+++ b/browser/extensions/pocket/content/main.js
@@ -626,17 +626,17 @@ var pktUIMessaging = (function() {
     }
 
 
     /**
      * Send a message to the panel's iframe
      */
     function sendMessageToPanel(panelId, messageId, payload) {
 
-        if (!isPanelIdValid(panelId)) { return; };
+        if (!isPanelIdValid(panelId)) { return; }
 
         var panelFrame = pktUI.getPanelFrame();
         if (!isPocketPanelFrameValid(panelFrame)) { return; }
 
         var doc = panelFrame.contentWindow.document;
         var documentElement = doc.documentElement;
 
         // Send message to panel
--- a/browser/extensions/pocket/content/pktApi.jsm
+++ b/browser/extensions/pocket/content/pktApi.jsm
@@ -339,17 +339,17 @@ var pktApi = (function() {
             access_token: accessToken,
             url: url,
             since: since ? since : 0
         };
 
         var title = options.title;
         if (title !== "undefined") {
             sendData.title = title;
-        };
+        }
 
         return apiRequest({
             path: "/firefox/save",
             data: sendData,
             success: function(data) {
 
                 // Update premium status, tags and since
                 var tags = data.tags;
--- a/browser/modules/Social.jsm
+++ b/browser/modules/Social.jsm
@@ -276,17 +276,17 @@ function CreateSocialStatusWidget(aId, a
       node.setAttribute("constrain-size", "true");
 
       if (PrivateBrowsingUtils.isWindowPrivate(aDocument.defaultView))
         node.setAttribute("disabled", "true");
 
       return node;
     }
   });
-};
+}
 
 function CreateSocialMarkWidget(aId, aProvider) {
   if (!aProvider.markURL)
     return;
   let widget = CustomizableUI.getWidget(aId);
   // The widget is only null if we've created then destroyed the widget.
   // Once we've actually called createWidget the provider will be set to
   // PROVIDER_API.
@@ -311,17 +311,17 @@ function CreateSocialMarkWidget(aId, aPr
       let menuLabel = window.gNavigatorBundle.getFormattedString("social.markpageMenu.label", [aProvider.name]);
       node.setAttribute("label", menuLabel);
       node.setAttribute("tooltiptext", menuLabel);
       node.setAttribute("observes", "Social:PageShareOrMark");
 
       return node;
     }
   });
-};
+}
 
 
 function sizeSocialPanelToContent(panel, iframe, requestedSize) {
   let doc = iframe.contentDocument;
   if (!doc || !doc.body) {
     return;
   }
   // We need an element to use for sizing our panel.  See if the body defines
--- a/browser/modules/test/xpcshell/test_DirectoryLinksProvider.js
+++ b/browser/modules/test/xpcshell/test_DirectoryLinksProvider.js
@@ -1542,17 +1542,17 @@ add_task(function* test_DirectoryLinksPr
     this.promise = new Promise(resolve => {
       this.onDeleteURI = (directoryLinksProvider, link) => {
         resolve();
       };
       this.onClearHistory = (directoryLinksProvider) => {
         resolve();
       };
     });
-  };
+  }
 
   let testObserver = new UrlDeletionTester();
   DirectoryLinksProvider.addObserver(testObserver);
 
   PlacesUtils.bhistory.removePage(NetUtil.newURI(landingUrl));
   yield testObserver.promise;
   DirectoryLinksProvider.removeObserver(testObserver);
   // views must be 2 and click should not exist
@@ -1660,17 +1660,17 @@ add_task(function* test_inadjecentSites(
     let badSiteB64 = [];
     sites.forEach(site => {
       badSiteB64.push(DirectoryLinksProvider._generateHash(site));
     });
     let theList = {"domains": badSiteB64};
     let dataURI = 'data:application/json,' + JSON.stringify(theList);
     DirectoryLinksProvider._inadjacentSitesUrl = dataURI;
     return DirectoryLinksProvider._loadInadjacentSites();
-  };
+  }
 
   // setup gLinks loader
   let gLinks = NewTabUtils.links;
   gLinks.addProvider(DirectoryLinksProvider);
 
   function updateNewTabCache() {
     gLinks.populateCache();
     return new Promise(resolve => {
--- a/browser/modules/webrtcUI.jsm
+++ b/browser/modules/webrtcUI.jsm
@@ -115,17 +115,17 @@ this.webrtcUI = {
       return {uri: state.documentURI, tab: tab, browser: browser, types: types};
     });
   },
 
   swapBrowserForNotification: function(aOldBrowser, aNewBrowser) {
     for (let stream of this._streams) {
       if (stream.browser == aOldBrowser)
         stream.browser = aNewBrowser;
-    };
+    }
   },
 
   showSharingDoorhanger: function(aActiveStream, aType) {
     let browserWindow = aActiveStream.browser.ownerDocument.defaultView;
     if (aActiveStream.tab) {
       browserWindow.gBrowser.selectedTab = aActiveStream.tab;
     } else {
       aActiveStream.browser.focus();
@@ -246,17 +246,17 @@ function denyRequest(aBrowser, aRequest)
 
 function getHost(uri, href) {
   let host;
   try {
     if (!uri) {
       uri = Services.io.newURI(href, null, null);
     }
     host = uri.host;
-  } catch (ex) {};
+  } catch (ex) {}
   if (!host) {
     if (uri && uri.scheme.toLowerCase() == "about") {
       // Special case-ing Loop/ Hello gUM requests.
       if (uri.specIgnoringRef == "about:loopconversation") {
         const kBundleURI = "chrome://browser/locale/loop/loop.properties";
         let bundle = Services.strings.createBundle(kBundleURI);
         host = bundle.GetStringFromName("clientShortname2");
       } else {
--- a/browser/tools/mozscreenshots/mozscreenshots/extension/Screenshot.jsm
+++ b/browser/tools/mozscreenshots/mozscreenshots/extension/Screenshot.jsm
@@ -168,13 +168,13 @@ let Screenshot = {
               setTimeout(resolve, 1000);
             } catch (ex) {
               reject(ex);
             }
             break;
           default:
             reject(topic);
             break;
-        };
+        }
       },
     };
   },
 };
--- a/toolkit/.eslintrc
+++ b/toolkit/.eslintrc
@@ -78,17 +78,17 @@
 
     // No assiging to exception variable
     // "no-ex-assign": 2,
 
     // No using !! where casting to boolean is already happening
     // "no-extra-boolean-cast": 2,
 
     // No double semicolon
-    // "no-extra-semi": 2,
+    "no-extra-semi": 2,
 
     // No overwriting defined functions
     // "no-func-assign": 2,
 
     // No invalid regular expresions
     // "no-invalid-regexp": 2,
 
     // No odd whitespace characters
--- a/toolkit/components/addoncompat/CompatWarning.jsm
+++ b/toolkit/components/addoncompat/CompatWarning.jsm
@@ -28,17 +28,17 @@ var CompatWarning = {
   // fires. However, we want the warning to show a stack for the
   // registration site.
   delayedWarning: function(msg, addon, warning) {
     function isShimLayer(filename) {
       return filename.indexOf("CompatWarning.jsm") != -1 ||
         filename.indexOf("RemoteAddonsParent.jsm") != -1 ||
         filename.indexOf("RemoteAddonsChild.jsm") != -1 ||
         filename.indexOf("multiprocessShims.js") != -1;
-    };
+    }
 
     let stack = Components.stack;
     while (stack && isShimLayer(stack.filename))
       stack = stack.caller;
 
     let alreadyWarned = false;
 
     return function() {
--- a/toolkit/components/apppicker/content/appPicker.js
+++ b/toolkit/components/apppicker/content/appPicker.js
@@ -1,15 +1,15 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 Components.utils.import("resource://gre/modules/AppConstants.jsm");
 
-function AppPicker() {};
+function AppPicker() {}
 
 AppPicker.prototype =
 {
     // Class members
     _incomingParams:null,
 
     /**
     * Init the dialog and populate the application list
--- a/toolkit/components/asyncshutdown/AsyncShutdown.jsm
+++ b/toolkit/components/asyncshutdown/AsyncShutdown.jsm
@@ -461,17 +461,17 @@ function getPhase(topic) {
       if (accepted) {
         return () => spinner.observe();
       }
       return undefined;
     }
   });
   gPhases.set(topic, phase);
   return phase;
-};
+}
 
 /**
  * Utility class used to spin the event loop until all blockers for a
  * Phase are satisfied.
  *
  * @param {string} topic The xpcom notification for that phase.
  */
 function Spinner(topic) {
--- a/toolkit/components/asyncshutdown/nsAsyncShutdown.js
+++ b/toolkit/components/asyncshutdown/nsAsyncShutdown.js
@@ -197,17 +197,17 @@ nsAsyncShutdownClient.prototype = {
  * @param {object} moduleBarrier an instance if
  * `AsyncShutdown.Barrier`. This instance will serve as back-end for
  * all methods.
  * @constructor
  */
 function nsAsyncShutdownBarrier(moduleBarrier) {
   this._client = new nsAsyncShutdownClient(moduleBarrier.client);
   this._moduleBarrier = moduleBarrier;
-};
+}
 nsAsyncShutdownBarrier.prototype = {
   get state() {
     return PropertyBagConverter.fromValue(this._moduleBarrier.state);
   },
   get client() {
     return this._client;
   },
   wait: function(onReady) {
--- a/toolkit/components/asyncshutdown/tests/xpcshell/test_converters.js
+++ b/toolkit/components/asyncshutdown/tests/xpcshell/test_converters.js
@@ -19,17 +19,17 @@ function normalize(obj) {
   if (Array.isArray(obj)) {
     return obj.map(normalize);
   }
   let result = {};
   for (let k of Object.keys(obj).sort()) {
     result[k] = normalize(obj[k]);
   }
   return result;
-};
+}
 
 function test_conversions() {
   const SAMPLES = [
     // Simple values
     1,
     true,
     "string",
     null,
--- a/toolkit/components/crashmonitor/nsCrashMonitor.js
+++ b/toolkit/components/crashmonitor/nsCrashMonitor.js
@@ -4,17 +4,17 @@
 
 Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
 Components.utils.import("resource://gre/modules/Services.jsm");
 
 var Scope = {}
 Components.utils.import("resource://gre/modules/CrashMonitor.jsm", Scope);
 var MonitorAPI = Scope.CrashMonitor;
 
-function CrashMonitor() {};
+function CrashMonitor() {}
 
 CrashMonitor.prototype = {
 
   classID: Components.ID("{d9d75e86-8f17-4c57-993e-f738f0d86d42}"),
   contractID: "@mozilla.org/toolkit/crashmonitor;1",
 
   QueryInterface: XPCOMUtils.generateQI([Components.interfaces.nsIObserver]),
 
--- a/toolkit/components/ctypes/tests/unit/test_jsctypes.js
+++ b/toolkit/components/ctypes/tests/unit/test_jsctypes.js
@@ -2625,17 +2625,17 @@ function run_single_closure_tests(librar
   var fn_64_t = ctypes.FunctionType(ctypes.default_abi, ctypes.uint64_t, [ctypes.bool]).ptr;
   var bignum1 = ctypes.UInt64.join(0xDEADBEEF, 0xBADF00D);
   var bignum2 = ctypes.UInt64.join(0xDEFEC8ED, 0xD15EA5E);
   function closure_fn_64(fail)
   {
     if (fail)
       throw "Just following orders, sir!";
     return bignum1;
-  };
+  }
   var closure64 = fn_64_t(closure_fn_64, null, bignum2);
   do_check_eq(ctypes.UInt64.compare(closure64(false), bignum1), 0);
   do_check_eq(ctypes.UInt64.compare(closure64(true), bignum2), 0);
 
   // Test a callback that returns void (see bug 682504).
   var fn_v_t = ctypes.FunctionType(ctypes.default_abi, ctypes.void_t, []).ptr;
   fn_v_t(function() {})(); // Don't crash
 
--- a/toolkit/components/filewatcher/tests/xpcshell/head.js
+++ b/toolkit/components/filewatcher/tests/xpcshell/head.js
@@ -9,17 +9,17 @@ var {classes: Cc, interfaces: Ci, result
 Cu.import("resource://gre/modules/osfile.jsm", this);
 Cu.import("resource://gre/modules/Promise.jsm", this);
 
 function makeWatcher() {
   let watcher =
     Cc['@mozilla.org/toolkit/filewatcher/native-file-watcher;1']
       .getService(Ci.nsINativeFileWatcherService);
   return watcher;
-};
+}
 
 function promiseAddPath(watcher, resource, onChange=null, onError=null) {
   return new Promise(resolve =>
     watcher.addPath(resource, onChange, onError, resolve)
   );
 }
 
 function promiseRemovePath(watcher, resource, onChange=null, onError=null) {
--- a/toolkit/components/formautofill/test/chrome/loader.js
+++ b/toolkit/components/formautofill/test/chrome/loader.js
@@ -56,22 +56,22 @@ var gTestTasks = [];
 
 // Define task registration functions, see description in "loader_common.js".
 function add_task(taskFn) {
   gTestTasks.push([taskFn, "content", taskFn.name]);
 }
 function add_task_in_parent_process(taskFn, taskIdOverride) {
   let taskId = taskIdOverride || getTaskId(Components.stack.caller);
   gTestTasks.push([taskFn, "parent", taskId]);
-};
+}
 function add_task_in_both_processes(taskFn) {
   // We need to define a task ID based on our direct caller.
   add_task_in_parent_process(taskFn, getTaskId(Components.stack.caller));
   add_task(taskFn);
-};
+}
 var add_task_in_child_process = add_task;
 
 window.addEventListener("load", function onLoad() {
   window.removeEventListener("load", onLoad);
 
   Task.spawn(function* () {
     try {
       for (let [taskFn, taskType, taskId] of gTestTasks) {
--- a/toolkit/components/formautofill/test/loader_common.js
+++ b/toolkit/components/formautofill/test/loader_common.js
@@ -83,17 +83,17 @@ function* terminationTaskFn() {
   for (let taskFn of gTerminationTasks) {
     try {
       yield Task.spawn(taskFn);
     } catch (ex) {
       Output.print(ex);
       Assert.ok(false);
     }
   }
-};
+}
 
 function add_termination_task(taskFn) {
   gTerminationTasks.push(taskFn);
 }
 
 /**
  * Returns a unique identifier used for synchronizing the given test task
  * between the parent and child processes.
--- a/toolkit/components/microformats/test/static/javascript/chai.js
+++ b/toolkit/components/microformats/test/static/javascript/chai.js
@@ -1031,17 +1031,17 @@ module.exports = function (chai, _) {
   function assertInstanceOf (constructor, msg) {
     if (msg) flag(this, 'message', msg);
     var name = _.getName(constructor);
     this.assert(
         flag(this, 'object') instanceof constructor
       , 'expected #{this} to be an instance of ' + name
       , 'expected #{this} to not be an instance of ' + name
     );
-  };
+  }
 
   Assertion.addMethod('instanceof', assertInstanceOf);
   Assertion.addMethod('instanceOf', assertInstanceOf);
 
   /**
    * ### .property(name, [value])
    *
    * Asserts that the target has a property `name`, optionally asserting that
@@ -1608,17 +1608,17 @@ module.exports = function (chai, _) {
         thrown === true
       , 'expected #{this} to throw ' + expectedThrown + actuallyGot
       , 'expected #{this} to not throw ' + expectedThrown + actuallyGot
       , (desiredError instanceof Error ? desiredError.toString() : desiredError)
       , (thrownError instanceof Error ? thrownError.toString() : thrownError)
     );
 
     flag(this, 'object', thrownError);
-  };
+  }
 
   Assertion.addMethod('throw', assertThrows);
   Assertion.addMethod('throws', assertThrows);
   Assertion.addMethod('Throw', assertThrows);
 
   /**
    * ### .respondTo(method)
    *
@@ -3308,17 +3308,17 @@ module.exports = function (chai, util) {
     should.not.exist = function (val, msg) {
       new Assertion(val, msg).to.not.exist;
     }
 
     should['throw'] = should['Throw'];
     should.not['throw'] = should.not['Throw'];
 
     return should;
-  };
+  }
 
   chai.should = loadShould;
   chai.Should = loadShould;
 };
 
 },{}],8:[function(require,module,exports){
 /*!
  * Chai - addChainingMethod utility
@@ -4715,17 +4715,17 @@ function exclude () {
       , res = {};
 
     for (; i < args.length; i++) {
       excludeProps(res, args[i]);
     }
 
     return res;
   };
-};
+}
 
 /*!
  * Primary Exports
  */
 
 module.exports = AssertionError;
 
 /**
--- a/toolkit/components/microformats/test/static/javascript/mocha.js
+++ b/toolkit/components/microformats/test/static/javascript/mocha.js
@@ -1,9 +1,9 @@
-;(function(){
+(function(){
 
 // CommonJS require()
 
 function require(p){
     var path = require.resolve(p)
       , mod = require.modules[path];
     if (!mod) throw new Error('failed to require "' + p + '"');
     if (!mod.exports) {
@@ -459,17 +459,17 @@ function isArray(obj) {
 }
 
 /**
  * Event emitter constructor.
  *
  * @api public
  */
 
-function EventEmitter(){};
+function EventEmitter(){}
 
 /**
  * Adds a listener.
  *
  * @api public
  */
 
 EventEmitter.prototype.on = function (name, fn) {
@@ -497,17 +497,17 @@ EventEmitter.prototype.addListener = Eve
  */
 
 EventEmitter.prototype.once = function (name, fn) {
   var self = this;
 
   function on () {
     self.removeListener(name, on);
     fn.apply(this, arguments);
-  };
+  }
 
   on.listener = fn;
   this.on(name, on);
 
   return this;
 };
 
 /**
@@ -905,17 +905,17 @@ function Hook(title, fn) {
   Runnable.call(this, title, fn);
   this.type = 'hook';
 }
 
 /**
  * Inherit from `Runnable.prototype`.
  */
 
-function F(){};
+function F(){}
 F.prototype = Runnable.prototype;
 Hook.prototype = new F;
 Hook.prototype.constructor = Hook;
 
 
 /**
  * Get or set the test `err`.
  *
@@ -2577,17 +2577,17 @@ function Dot(runner) {
     self.epilogue();
   });
 }
 
 /**
  * Inherit from `Base.prototype`.
  */
 
-function F(){};
+function F(){}
 F.prototype = Base.prototype;
 Dot.prototype = new F;
 Dot.prototype.constructor = Dot;
 
 
 }); // module: reporters/dot.js
 
 require.register("reporters/html-cov.js", function(module, exports, require){
@@ -3365,17 +3365,17 @@ function Landing(runner) {
     self.epilogue();
   });
 }
 
 /**
  * Inherit from `Base.prototype`.
  */
 
-function F(){};
+function F(){}
 F.prototype = Base.prototype;
 Landing.prototype = new F;
 Landing.prototype.constructor = Landing;
 
 
 }); // module: reporters/landing.js
 
 require.register("reporters/list.js", function(module, exports, require){
@@ -3436,17 +3436,17 @@ function List(runner) {
 
   runner.on('end', self.epilogue.bind(self));
 }
 
 /**
  * Inherit from `Base.prototype`.
  */
 
-function F(){};
+function F(){}
 F.prototype = Base.prototype;
 List.prototype = new F;
 List.prototype.constructor = List;
 
 
 }); // module: reporters/list.js
 
 require.register("reporters/markdown.js", function(module, exports, require){
@@ -3585,17 +3585,17 @@ function Min(runner) {
 
   runner.on('end', this.epilogue.bind(this));
 }
 
 /**
  * Inherit from `Base.prototype`.
  */
 
-function F(){};
+function F(){}
 F.prototype = Base.prototype;
 Min.prototype = new F;
 Min.prototype.constructor = Min;
 
 
 }); // module: reporters/min.js
 
 require.register("reporters/nyan.js", function(module, exports, require){
@@ -3853,17 +3853,17 @@ NyanCat.prototype.rainbowify = function(
 function write(string) {
   process.stdout.write(string);
 }
 
 /**
  * Inherit from `Base.prototype`.
  */
 
-function F(){};
+function F(){}
 F.prototype = Base.prototype;
 NyanCat.prototype = new F;
 NyanCat.prototype.constructor = NyanCat;
 
 
 }); // module: reporters/nyan.js
 
 require.register("reporters/progress.js", function(module, exports, require){
@@ -3953,17 +3953,17 @@ function Progress(runner, options) {
     self.epilogue();
   });
 }
 
 /**
  * Inherit from `Base.prototype`.
  */
 
-function F(){};
+function F(){}
 F.prototype = Base.prototype;
 Progress.prototype = new F;
 Progress.prototype.constructor = Progress;
 
 
 }); // module: reporters/progress.js
 
 require.register("reporters/spec.js", function(module, exports, require){
@@ -4043,17 +4043,17 @@ function Spec(runner) {
 
   runner.on('end', self.epilogue.bind(self));
 }
 
 /**
  * Inherit from `Base.prototype`.
  */
 
-function F(){};
+function F(){}
 F.prototype = Base.prototype;
 Spec.prototype = new F;
 Spec.prototype.constructor = Spec;
 
 
 }); // module: reporters/spec.js
 
 require.register("reporters/tap.js", function(module, exports, require){
@@ -4218,17 +4218,17 @@ XUnit.prototype.done = function(failures
         fn(failures);
     }
 };
 
 /**
  * Inherit from `Base.prototype`.
  */
 
-function F(){};
+function F(){}
 F.prototype = Base.prototype;
 XUnit.prototype = new F;
 XUnit.prototype.constructor = XUnit;
 
 
 /**
  * Write out the given line
  */
@@ -4341,17 +4341,17 @@ function Runnable(title, fn) {
   this.timedOut = false;
   this._trace = new Error('done() called multiple times')
 }
 
 /**
  * Inherit from `EventEmitter.prototype`.
  */
 
-function F(){};
+function F(){}
 F.prototype = EventEmitter.prototype;
 Runnable.prototype = new F;
 Runnable.prototype.constructor = Runnable;
 
 
 /**
  * Set & get timeout `ms`.
  *
@@ -4659,17 +4659,17 @@ function Runner(suite, delay) {
  */
 
 Runner.immediately = global.setImmediate || process.nextTick;
 
 /**
  * Inherit from `EventEmitter.prototype`.
  */
 
-function F(){};
+function F(){}
 F.prototype = EventEmitter.prototype;
 Runner.prototype = new F;
 Runner.prototype.constructor = Runner;
 
 
 /**
  * Run tests with full titles matching `re`. Updates runner.total
  * with number of tests matched.
@@ -5368,17 +5368,17 @@ function Suite(title, parentContext) {
   this._bail = false;
   this.delayed = false;
 }
 
 /**
  * Inherit from `EventEmitter.prototype`.
  */
 
-function F(){};
+function F(){}
 F.prototype = EventEmitter.prototype;
 Suite.prototype = new F;
 Suite.prototype.constructor = Suite;
 
 
 /**
  * Return a clone of this `Suite`.
  *
@@ -5690,17 +5690,17 @@ function Test(title, fn) {
   this.pending = !fn;
   this.type = 'test';
 }
 
 /**
  * Inherit from `Runnable.prototype`.
  */
 
-function F(){};
+function F(){}
 F.prototype = Runnable.prototype;
 Test.prototype = new F;
 Test.prototype.constructor = Test;
 
 
 }); // module: test.js
 
 require.register("utils.js", function(module, exports, require){
--- a/toolkit/components/microformats/test/static/javascript/testrunner.js
+++ b/toolkit/components/microformats/test/static/javascript/testrunner.js
@@ -154,26 +154,26 @@ function htmlUnescape(value){
 // Does the node have a class
 function hasClass(node, className) {
     if (node.className) {
         return node.className.match(
             new RegExp('(\\s|^)' + className + '(\\s|$)'));
     } else {
         return false;
     }
-};
+}
 
 
 // Add a class to an node
 function addClass(node, className) {
     if (!hasClass(node, className)) {
         node.className += " " + className;
     }
-};
+}
 
 
 // Removes a class from an node
 function removeClass(node, className) {
     if (hasClass(node, className)) {
         var reg = new RegExp('(\\s|^)' + className + '(\\s|$)');
         node.className = node.className.replace(reg, ' ');
     }
-};
+}
--- a/toolkit/components/microformats/tests/test_Microformats_adr.html
+++ b/toolkit/components/microformats/tests/test_Microformats_adr.html
@@ -17,17 +17,17 @@
 
 test_Microformats();
 test_adr();
 
 function test_Microformats() {
   var Microformats = SpecialPowers.Cu.import("resource://gre/modules/Microformats.js").Microformats;
 
   ok(Microformats, "Check global access to Microformats");
-};
+}
 
 function test_adr() {
   var adr = SpecialPowers.Cu.import("resource://gre/modules/Microformats.js").adr;
 
   var address;
 
   address = new adr(document.getElementById("01-extended-address"));
 
--- a/toolkit/components/microformats/tests/test_Microformats_geo.html
+++ b/toolkit/components/microformats/tests/test_Microformats_geo.html
@@ -81,17 +81,17 @@
 
 test_Microformats();
 test_geo();
 
 function test_Microformats() {
   var Microformats = SpecialPowers.Cu.import("resource://gre/modules/Microformats.js").Microformats;
 
   ok(Microformats, "Check global access to Microformats");
-};
+}
 
 function test_geo() {
   var geo = SpecialPowers.Cu.import("resource://gre/modules/Microformats.js").geo;
 
   var Geo;
 
   Geo = new geo(document.getElementById("01-geo-basic"));
 
--- a/toolkit/components/microformats/tests/test_Microformats_hCalendar.html
+++ b/toolkit/components/microformats/tests/test_Microformats_hCalendar.html
@@ -185,17 +185,17 @@
 
 test_Microformats();
 test_hCard();
 
 function test_Microformats() {
   var Microformats = SpecialPowers.Cu.import("resource://gre/modules/Microformats.js").Microformats;
 
   ok(Microformats, "Check global access to Microformats");
-};
+}
 
 function test_hCard() {
   var hCalendar = SpecialPowers.Cu.import("resource://gre/modules/Microformats.js").hCalendar;
 
   var hcalendar;
 
   hcalendar = new hCalendar(document.getElementById("01-component-vevent-dtstart-date"));
 
--- a/toolkit/components/microformats/tests/test_Microformats_hCard.html
+++ b/toolkit/components/microformats/tests/test_Microformats_hCard.html
@@ -561,17 +561,17 @@
 
 test_Microformats();
 test_hCard();
 
 function test_Microformats() {
   var Microformats = SpecialPowers.Cu.import("resource://gre/modules/Microformats.js").Microformats;
 
   ok(Microformats, "Check global access to Microformats");
-};
+}
 
 function test_hCard() {
   var hCard = SpecialPowers.Cu.import("resource://gre/modules/Microformats.js").hCard;
 
   var hcard;
 
   hcard = new hCard(document.getElementById("01-tantek-basic"));
 
--- a/toolkit/components/places/UnifiedComplete.js
+++ b/toolkit/components/places/UnifiedComplete.js
@@ -1330,17 +1330,17 @@ Search.prototype = {
     };
 
     try {
       let favicon = yield PlacesUtils.promiseFaviconLinkUrl(uri);
       if (favicon)
         match.icon = favicon.spec;
     } catch (e) {
       // It's possible we don't have a favicon for this - and that's ok.
-    };
+    }
 
     this._addMatch(match);
     return true;
   },
 
   _onResultRow: function (row) {
     if (this._localMatchesCount == 0) {
       TelemetryStopwatch.finish(TELEMETRY_1ST_RESULT, this);
--- a/toolkit/components/places/nsPlacesAutoComplete.js
+++ b/toolkit/components/places/nsPlacesAutoComplete.js
@@ -988,17 +988,17 @@ nsPlacesAutoComplete.prototype = {
           restrict("url");
           break;
         case this._restrictTypedToken:
           restrict("typed");
           break;
         default:
           // We do not want to remove the token if we did not match.
           continue;
-      };
+      }
 
       aTokens.splice(i, 1);
     }
 
     // Set the right JavaScript behavior based on our preference.  Note that the
     // preference is whether or not we should filter JavaScript, and the
     // behavior is if we should search it or not.
     if (!this._filterJavaScript) {
--- a/toolkit/components/places/tests/autocomplete/head_autocomplete.js
+++ b/toolkit/components/places/tests/autocomplete/head_autocomplete.js
@@ -265,17 +265,17 @@ function run_test() {
   // Do an extra function if necessary
   if (func)
     func();
 
   Task.spawn(function* () {
     // Iterate over all tasks and execute them
     for (let [, [fn, args]] in Iterator(gNextTestSetupTasks)) {
       yield fn.apply(this, args);
-    };
+    }
 
     // Clean up to allow tests to register more functions.
     gNextTestSetupTasks = [];
 
     // At this point frecency could still be updating due to latest pages
     // updates.  This is not a problem in real life, but autocomplete tests
     // should return reliable resultsets, thus we have to wait.
     yield PlacesTestUtils.promiseAsyncUpdates();
--- a/toolkit/components/places/tests/browser/browser_favicon_privatebrowsing_perwindowpb.js
+++ b/toolkit/components/places/tests/browser/browser_favicon_privatebrowsing_perwindowpb.js
@@ -15,17 +15,17 @@ function test() {
     });
   });
 
   function testOnWindow(aIsPrivate, aCallback) {
     whenNewWindowLoaded({private: aIsPrivate}, function(aWin) {
       windowsToClose.push(aWin);
       executeSoon(() => aCallback(aWin));
     });
-  };
+  }
 
   function waitForTabLoad(aWin, aCallback) {
     aWin.gBrowser.selectedBrowser.addEventListener("load", function onLoad() {
       aWin.gBrowser.selectedBrowser.removeEventListener("load", onLoad, true);
       aCallback();
     }, true);
     aWin.gBrowser.selectedBrowser.loadURI(pageURI);
   }
--- a/toolkit/components/places/tests/browser/browser_favicon_setAndFetchFaviconForPage.js
+++ b/toolkit/components/places/tests/browser/browser_favicon_setAndFetchFaviconForPage.js
@@ -15,17 +15,17 @@ function test() {
   let pageURI;
   let favIconData;
 
   function testOnWindow(aOptions, aCallback) {
     whenNewWindowLoaded(aOptions, function(aWin) {
       windowsToClose.push(aWin);
       executeSoon(() => aCallback(aWin));
     });
-  };
+  }
 
   // This function is called after calling finish() on the test.
   registerCleanupFunction(function() {
     windowsToClose.forEach(function(aWin) {
       aWin.close();
     });
   });
 
--- a/toolkit/components/places/tests/browser/browser_favicon_setAndFetchFaviconForPage_failures.js
+++ b/toolkit/components/places/tests/browser/browser_favicon_setAndFetchFaviconForPage_failures.js
@@ -24,17 +24,17 @@ function test() {
   let favIconsResultCount = 0;
   let pageURI;
 
   function testOnWindow(aOptions, aCallback) {
     whenNewWindowLoaded(aOptions, function(aWin) {
       windowsToClose.push(aWin);
       executeSoon(() => aCallback(aWin));
     });
-  };
+  }
 
   // This function is called after calling finish() on the test.
   registerCleanupFunction(function() {
     windowsToClose.forEach(function(aWin) {
       aWin.close();
     });
   });
 
--- a/toolkit/components/places/tests/browser/browser_visituri_privatebrowsing_perwindowpb.js
+++ b/toolkit/components/places/tests/browser/browser_visituri_privatebrowsing_perwindowpb.js
@@ -46,17 +46,17 @@ function test() {
   function testOnWindow(aOptions, aCallback) {
     whenNewWindowLoaded(aOptions, function(aWin) {
       windowsToClose.push(aWin);
       // execute should only be called when need, like when you are opening
       // web pages on the test. If calling executeSoon() is not necesary, then
       // call whenNewWindowLoaded() instead of testOnWindow() on your test.
       executeSoon(() => aCallback(aWin));
     });
-  };
+  }
 
    // This function is called after calling finish() on the test.
   registerCleanupFunction(function() {
     windowsToClose.forEach(function(aWin) {
       aWin.close();
     });
   });
 
--- a/toolkit/components/places/tests/browser/head.js
+++ b/toolkit/components/places/tests/browser/head.js
@@ -310,10 +310,10 @@ function waitForCondition(condition, nex
     if (conditionPassed) {
       moveOn();
     }
     tries++;
   }, 200);
   function moveOn() {
     clearInterval(interval);
     nextTest();
-  };
+  }
 }
--- a/toolkit/components/places/tests/expiration/test_outdated_analyze.js
+++ b/toolkit/components/places/tests/expiration/test_outdated_analyze.js
@@ -33,17 +33,17 @@ function run_test() {
   // Add a bunch of pages (at laast IMPORT_PAGES_THRESHOLD pages).
   let places = [];
   for (let i = 0; i < 100; i++) {
     places.push({
       uri: NetUtil.newURI(TEST_URL + i),
       title: "Title" + i,
       visits: [new VisitInfo]
     });
-  };
+  }
   gHistory.updatePlaces(places);
 
   // Set interval to a small value to expire on it.
   setInterval(1); // 1s
 
   Services.obs.addObserver(function observeExpiration(aSubject, aTopic, aData) {
     Services.obs.removeObserver(observeExpiration,
                                 PlacesUtils.TOPIC_EXPIRATION_FINISHED);
--- a/toolkit/components/places/tests/favicons/test_replaceFaviconData.js
+++ b/toolkit/components/places/tests/favicons/test_replaceFaviconData.js
@@ -52,17 +52,17 @@ function checkCallbackSucceeded(callback
   do_check_eq(callbackMimetype, sourceMimetype);
   do_check_true(compareArrays(callbackData, sourceData));
 }
 
 function run_test() {
   // check that the favicon loaded correctly
   do_check_eq(originalFavicon.data.length, 286);
   run_next_test();
-};
+}
 
 add_task(function* test_replaceFaviconData_validHistoryURI() {
   do_print("test replaceFaviconData for valid history uri");
 
   let pageURI = uri("http://test1.bar/");
   yield PlacesTestUtils.addVisits(pageURI);
 
   let favicon = createFavicon("favicon1.png");
--- a/toolkit/components/places/tests/favicons/test_replaceFaviconDataFromDataURL.js
+++ b/toolkit/components/places/tests/favicons/test_replaceFaviconDataFromDataURL.js
@@ -55,17 +55,17 @@ function checkCallbackSucceeded(callback
   do_check_eq(callbackMimetype, sourceMimetype);
   do_check_true(compareArrays(callbackData, sourceData));
 }
 
 function run_test() {
   // check that the favicon loaded correctly
   do_check_eq(originalFavicon.data.length, 286);
   run_next_test();
-};
+}
 
 add_task(function* test_replaceFaviconDataFromDataURL_validHistoryURI() {
   do_print("test replaceFaviconDataFromDataURL for valid history uri");
 
   let pageURI = uri("http://test1.bar/");
   yield PlacesTestUtils.addVisits(pageURI);
 
   let favicon = createFavicon("favicon1.png");
--- a/toolkit/components/places/tests/head_common.js
+++ b/toolkit/components/places/tests/head_common.js
@@ -113,17 +113,17 @@ function DBConn(aForceNewConnection) {
     file.append("places.sqlite");
     let dbConn = gDBConn = Services.storage.openDatabase(file);
 
     // Be sure to cleanly close this connection.
     promiseTopicObserved("profile-before-change").then(() => dbConn.asyncClose());
   }
 
   return gDBConn.connectionReady ? gDBConn : null;
-};
+}
 
 /**
  * Reads data from the provided inputstream.
  *
  * @return an array of bytes.
  */
 function readInputStreamData(aStream) {
   let bistream = Cc["@mozilla.org/binaryinputstream;1"].
--- a/toolkit/components/places/tests/history/test_remove.js
+++ b/toolkit/components/places/tests/history/test_remove.js
@@ -139,17 +139,17 @@ add_task(function* test_remove_single() 
 // Test removing a list of pages
 add_task(function* test_remove_many() {
   const SIZE = 10;
 
   yield PlacesTestUtils.clearHistory();
   yield PlacesUtils.bookmarks.eraseEverything();
 
   do_print("Adding a witness page");
-  let WITNESS_URI = NetUtil.newURI("http://mozilla.com/test_browserhistory/test_remove/" + Math.random());;
+  let WITNESS_URI = NetUtil.newURI("http://mozilla.com/test_browserhistory/test_remove/" + Math.random());
   yield PlacesTestUtils.addVisits(WITNESS_URI);
   Assert.ok(page_in_database(WITNESS_URI), "Witness page added");
 
   do_print("Generating samples");
   let pages = [];
   for (let i = 0; i < SIZE; ++i) {
     let uri = NetUtil.newURI("http://mozilla.com/test_browserhistory/test_remove?sample=" + i + "&salt=" + Math.random());
     let title = "Visit " + i + ", " + Math.random();
--- a/toolkit/components/places/tests/test_bug_461710_perwindowpb.html
+++ b/toolkit/components/places/tests/test_bug_461710_perwindowpb.html
@@ -180,17 +180,17 @@ function testOnWindow(aIsPrivate, callba
   var mainWindow = window.QueryInterface(Ci.nsIInterfaceRequestor)
                          .getInterface(Ci.nsIWebNavigation)
                          .QueryInterface(Ci.nsIDocShellTreeItem)
                          .rootTreeItem
                          .QueryInterface(Ci.nsIInterfaceRequestor)
                          .getInterface(Ci.nsIDOMWindow);
   var win = mainWindow.OpenBrowserWindow({private: aIsPrivate});
   whenDelayedStartupFinished(win, function() { callback(win); });
-};
+}
 
 const URI_VISITED_RESOLUTION_TOPIC = "visited-status-resolution";
 var observer = {
   uri: null,
   resolved: true,
   observe: function (aSubject, aTopic, aData) {
 
     if (this.uri.equals(SpecialPowers.wrap(aSubject).QueryInterface(Ci.nsIURI))) {
--- a/toolkit/components/places/tests/unit/test_async_history_api.js
+++ b/toolkit/components/places/tests/unit/test_async_history_api.js
@@ -1000,17 +1000,17 @@ add_task(function* test_title_change_not
             place.visits = [new VisitInfo()];
             PlacesUtils.asyncHistory.updatePlaces(place);
             break;
           case 2:
             PlacesUtils.history.removeObserver(silentObserver);
             PlacesUtils.history.removeObserver(observer);
             resolve();
             break;
-        };
+        }
       });
 
       PlacesUtils.history.addObserver(observer, false);
       PlacesUtils.asyncHistory.updatePlaces(aPlace);
     });
   }
 
   yield promiseTitleChangedObserver(place);
--- a/toolkit/components/places/tests/unit/test_download_history.js
+++ b/toolkit/components/places/tests/unit/test_download_history.js
@@ -220,17 +220,17 @@ add_test(function test_dh_details()
   function checkFinished()
   {
     if (titleSet && destinationFileUriSet && destinationFileNameSet) {
       PlacesUtils.annotations.removeObserver(annoObserver);
       PlacesUtils.history.removeObserver(historyObserver);
 
       PlacesTestUtils.clearHistory().then(run_next_test);
     }
-  };
+  }
 
   let annoObserver = {
     onPageAnnotationSet: function AO_onPageAnnotationSet(aPage, aName)
     {
       if (aPage.equals(SOURCE_URI)) {
         let value = PlacesUtils.annotations.getPageAnnotation(aPage, aName);
         switch (aName)
         {
--- a/toolkit/components/promiseworker/PromiseWorker.jsm
+++ b/toolkit/components/promiseworker/PromiseWorker.jsm
@@ -32,17 +32,17 @@ XPCOMUtils.defineLazyModuleGetter(this, 
 /**
  * An implementation of queues (FIFO).
  *
  * The current implementation uses one array, runs in O(n ^ 2), and is optimized
  * for the case in which queues are generally short.
  */
 function Queue() {
   this._array = [];
-};
+}
 Queue.prototype = {
   pop: function pop() {
     return this._array.shift();
   },
   push: function push(x) {
     return this._array.push(x);
   },
   isEmpty: function isEmpty() {
@@ -367,17 +367,17 @@ this.BasePromiseWorker.prototype = {
 
 /**
  * An error that has been serialized by the worker.
  *
  * @constructor
  */
 function WorkerError(data) {
   this.data = data;
-};
+}
 
 /**
  * A constructor used to send data to the worker thread while
  * with special treatment (e.g. transmitting data instead of
  * copying it).
  *
  * @param {object=} data The data to send to the caller thread.
  * @param {object=} meta Additional instructions, as an object
--- a/toolkit/components/promiseworker/worker/PromiseWorker.js
+++ b/toolkit/components/promiseworker/worker/PromiseWorker.js
@@ -53,17 +53,17 @@ const EXCEPTION_NAMES = {
  * - {Array} transfers An array of objects that should be transferred
  *   instead of being copied.
  *
  * @constructor
  */
 function Meta(data, meta) {
   this.data = data;
   this.meta = meta;
-};
+}
 exports.Meta = Meta;
 
 /**
  * Base class for a worker.
  *
  * Derived classes are expected to provide the following methods:
  * {
  *   dispatch: function(method, args) {
@@ -83,17 +83,17 @@ exports.Meta = Meta;
  * By default, the AbstractWorker is not connected to a message port,
  * hence will not receive anything.
  *
  * To connect it, use `onmessage`, as follows:
  *   self.addEventListener("message", msg => myWorkerInstance.handleMessage(msg));
  */
 function AbstractWorker(agent) {
   this._agent = agent;
-};
+}
 AbstractWorker.prototype = {
   // Default logger: discard all messages
   log: function() {
   },
 
   /**
    * Handle a message.
    */
--- a/toolkit/components/prompts/src/SharedPromptUtils.jsm
+++ b/toolkit/components/prompts/src/SharedPromptUtils.jsm
@@ -61,17 +61,17 @@ this.PromptUtils = {
  *                       is to be disabled.
  * @param focusTarget    The window used to watch focus/blur events.
  */
 this.EnableDelayHelper = function({enableDialog, disableDialog, focusTarget}) {
     this.enableDialog = makeSafe(enableDialog);
     this.disableDialog = makeSafe(disableDialog);
     this.focusTarget = focusTarget;
 
-    this.disableDialog();;
+    this.disableDialog();
 
     this.focusTarget.addEventListener("blur", this, false);
     this.focusTarget.addEventListener("focus", this, false);
     this.focusTarget.document.addEventListener("unload", this, false);
 
     this.startOnFocusDelay();
 };
 
--- a/toolkit/components/satchel/test/browser/browser_privbrowsing_perwindowpb.js
+++ b/toolkit/components/satchel/test/browser/browser_privbrowsing_perwindowpb.js
@@ -54,17 +54,17 @@ function test() {
     aWindow.gBrowser.selectedBrowser.loadURI(testURI);
   }
 
   function testOnWindow(aOptions, aCallback) {
     whenNewWindowLoaded(aOptions, function(aWin) {
       windowsToClose.push(aWin);
       executeSoon(() => aCallback(aWin));
     });
-  };
+  }
 
   registerCleanupFunction(function() {
     windowsToClose.forEach(function(aWin) {
       aWin.close();
     });
   });
 
 
--- a/toolkit/components/satchel/test/unit/test_async_expire.js
+++ b/toolkit/components/satchel/test/unit/test_async_expire.js
@@ -160,9 +160,9 @@ function* tests()
 
   yield countEntries("bar", "29days", checkNotExists);
   yield countEntries("9DaysOld", "foo", checkExists);
   yield countEntries("name-B", "value-B", checkExists);
   yield countEntries("name-C", "value-C", checkExists);
   yield countEntries(null, null, function(num) { do_check_eq(3, num); next_test(); });
 
   test_finished();
-};
+}
--- a/toolkit/components/satchel/test/unit/test_notify.js
+++ b/toolkit/components/satchel/test/unit/test_notify.js
@@ -152,9 +152,9 @@ do_check_eq(expectedNotification, null);
 
 os.removeObserver(TestObserver, "satchel-storage-changed", false);
 
 do_test_finished();
 
 } catch (e) {
     throw "FAILED in test #" + testnum + " -- " + testdesc + ": " + e;
 }
-};
+}
--- a/toolkit/components/search/tests/xpcshell/test_SearchStaticData.js
+++ b/toolkit/components/search/tests/xpcshell/test_SearchStaticData.js
@@ -16,12 +16,12 @@ function run_test() {
                                 .indexOf("www.google.com") != -1);
   do_check_true(SearchStaticData.getAlternateDomains("www.google.com")
                                 .every(d => d.startsWith("www.google.")));
   do_check_true(SearchStaticData.getAlternateDomains("google.com").length == 0);
 
   // Test that methods from SearchStaticData module can be overwritten,
   // needed for hotfixing.
   let backup = SearchStaticData.getAlternateDomains;
-  SearchStaticData.getAlternateDomains = () => ["www.bing.fr"];;
+  SearchStaticData.getAlternateDomains = () => ["www.bing.fr"];
   do_check_matches(SearchStaticData.getAlternateDomains("www.bing.com"), ["www.bing.fr"]);
   SearchStaticData.getAlternateDomains = backup;
 }
--- a/toolkit/components/social/test/browser/browser_workerAPI.js
+++ b/toolkit/components/social/test/browser/browser_workerAPI.js
@@ -202,17 +202,17 @@ var tests = {
         port.close();
         next(); // all out of tests!
         return;
       }
       openLocation = openWhere = null;
       [toURL, expectedLocation, expectedWhere] = testArgs.shift();
       data.actionArgs.toURL = toURL;
       port.postMessage({topic: 'test-notification-create', data: data});
-    };
+    }
 
     port.onmessage = function(evt) {
       if (evt.data.topic == "did-notification-create") {
         is(openLocation, expectedLocation, "url actually opened was " + openLocation);
         is(openWhere, expectedWhere, "the url was opened in a " + expectedWhere);
         nextTest();
       }
     }
--- a/toolkit/components/telemetry/TelemetryEnvironment.jsm
+++ b/toolkit/components/telemetry/TelemetryEnvironment.jsm
@@ -889,17 +889,17 @@ EnvironmentCache.prototype = {
 
   _removeObservers: function () {
     // Remove the search engine change and service observers.
     Services.obs.removeObserver(this, SEARCH_ENGINE_MODIFIED_TOPIC);
     Services.obs.removeObserver(this, SEARCH_SERVICE_TOPIC);
     Services.obs.removeObserver(this, COMPOSITOR_CREATED_TOPIC);
     try {
       Services.obs.removeObserver(this, DISTRIBUTION_CUSTOMIZATION_COMPLETE_TOPIC);
-    } catch(ex) {};
+    } catch(ex) {}
   },
 
   observe: function (aSubject, aTopic, aData) {
     this._log.trace("observe - aTopic: " + aTopic + ", aData: " + aData);
     switch (aTopic) {
       case SEARCH_ENGINE_MODIFIED_TOPIC:
         if (aData != "engine-current") {
           return;
--- a/toolkit/components/telemetry/TelemetrySession.jsm
+++ b/toolkit/components/telemetry/TelemetrySession.jsm
@@ -828,17 +828,17 @@ var Impl = {
    * Returns an object:
    * { range: [min, max], bucket_count: <number of buckets>,
    *   histogram_type: <histogram_type>, sum: <sum>,
    *   sum_squares_lo: <sum_squares_lo>,
    *   sum_squares_hi: <sum_squares_hi>,
    *   values: { bucket1: count1, bucket2: count2, ... } }
    */
   packHistogram: function packHistogram(hgram) {
-    let r = hgram.ranges;;
+    let r = hgram.ranges;
     let c = hgram.counts;
     let retgram = {
       range: [r[1], r[r.length - 1]],
       bucket_count: r.length,
       histogram_type: hgram.histogram_type,
       values: {},
       sum: hgram.sum
     };
@@ -1058,17 +1058,17 @@ var Impl = {
         // aren't available on all platforms.  But if the attribute simply
         // isn't present, that indicates the distinguished amounts have changed
         // and this file hasn't been updated appropriately.
         let amount = mgr[amountName];
         NS_ASSERT(amount !== undefined,
                   "telemetry accessed an unknown distinguished amount");
         boundHandleMemoryReport(id, units, amount);
       } catch (e) {
-      };
+      }
     }
     let b = (id, n) => h(id, Ci.nsIMemoryReporter.UNITS_BYTES, n);
     let c = (id, n) => h(id, Ci.nsIMemoryReporter.UNITS_COUNT, n);
     let cc= (id, n) => h(id, Ci.nsIMemoryReporter.UNITS_COUNT_CUMULATIVE, n);
     let p = (id, n) => h(id, Ci.nsIMemoryReporter.UNITS_PERCENTAGE, n);
 
     b("MEMORY_VSIZE", "vsize");
     b("MEMORY_VSIZE_MAX_CONTIGUOUS", "vsizeMaxContiguous");
--- a/toolkit/components/telemetry/TelemetryStorage.jsm
+++ b/toolkit/components/telemetry/TelemetryStorage.jsm
@@ -1337,17 +1337,17 @@ var TelemetryStorageImpl = {
         Telemetry.getHistogramById("TELEMETRY_PENDING_LOAD_FAILURE_READ").add();
       } else if (e instanceof PingParseError) {
         Telemetry.getHistogramById("TELEMETRY_PENDING_LOAD_FAILURE_PARSE").add();
       }
       // Remove the ping from the cache, so we don't try to load it again.
       this._pendingPings.delete(id);
       // Then propagate the rejection.
       throw e;
-    };
+    }
 
     return ping;
   }),
 
   removePendingPing: function(id) {
     let info = this._pendingPings.get(id);
     if (!info) {
       this._log.trace("removePendingPing - unknown id " + id);
--- a/toolkit/components/telemetry/ThirdPartyCookieProbe.jsm
+++ b/toolkit/components/telemetry/ThirdPartyCookieProbe.jsm
@@ -183,9 +183,9 @@ RejectStats.prototype = {
   }
 };
 
 /**
  * Normalize a host to its eTLD + 1.
  */
 function normalizeHost(host) {
   return Services.eTLD.getBaseDomainFromHost(host);
-};
+}
--- a/toolkit/components/telemetry/tests/unit/test_TelemetryEnvironment.js
+++ b/toolkit/components/telemetry/tests/unit/test_TelemetryEnvironment.js
@@ -208,17 +208,17 @@ function createMockAddonProvider(aName) 
     },
 
     shutdown() {
       return Promise.resolve();
     },
   };
 
   return mockProvider;
-};
+}
 
 /**
  * Used to spoof the Persona Id.
  */
 function spoofTheme(aId, aName, aDesc) {
   return {
     id: aId,
     name: aName,
--- a/toolkit/components/thumbnails/PageThumbUtils.jsm
+++ b/toolkit/components/thumbnails/PageThumbUtils.jsm
@@ -86,17 +86,17 @@ this.PageThumbUtils = {
        */
       let prefWidth = Services.prefs.getIntPref("toolkit.pageThumbs.minWidth");
       let prefHeight = Services.prefs.getIntPref("toolkit.pageThumbs.minHeight");
       let divisor = Services.prefs.getIntPref("toolkit.pageThumbs.screenSizeDivisor");
 
       prefWidth *= scale;
       prefHeight *= scale;
 
-      this._thumbnailWidth = Math.max(Math.round(screenWidth.value / divisor), prefWidth);;
+      this._thumbnailWidth = Math.max(Math.round(screenWidth.value / divisor), prefWidth);
       this._thumbnailHeight = Math.max(Math.round(screenHeight.value / divisor), prefHeight);
     }
 
     return [this._thumbnailWidth, this._thumbnailHeight];
   },
 
   /***
    * Given a browser window, return the size of the content
--- a/toolkit/content/aboutTelemetry.js
+++ b/toolkit/content/aboutTelemetry.js
@@ -1412,17 +1412,17 @@ function RenderObject(aObject) {
   if (keys.length == 0) {
     return "{}";
   }
   output = "{\"" + keys[0] + "\":\u00A0" + JSON.stringify(aObject[keys[0]]);
   for (let i = 1; i < keys.length; i++) {
     output += ", \"" + keys[i] + "\":\u00A0" + JSON.stringify(aObject[keys[i]]);
   }
   return output + "}";
-};
+}
 
 var KeyValueTable = {
   /**
    * Returns a 2-column table with keys and values
    * @param aMeasurements Each key in this JS object is rendered as a row in
    *                      the table with its corresponding value
    * @param aKeysLabel    Column header for the keys column
    * @param aValuesLabel  Column header for the values column
--- a/toolkit/content/aboutwebrtc/aboutWebrtc.js
+++ b/toolkit/content/aboutwebrtc/aboutWebrtc.js
@@ -178,24 +178,24 @@ SavePage.prototype.onClick = function() 
     let fout = FileUtils.openAtomicFileOutputStream(
       FilePicker.file, FileUtils.MODE_WRONLY | FileUtils.MODE_CREATE);
 
     let nodes = content.querySelectorAll(".no-print");
     let noPrintList = [];
     for (let node of nodes) {
       noPrintList.push(node);
       node.style.setProperty("display", "none");
-    };
+    }
 
     fout.write(content.outerHTML, content.outerHTML.length);
     FileUtils.closeAtomicFileOutputStream(fout);
 
     for (let node of noPrintList) {
       node.style.removeProperty("display");
-    };
+    }
 
     this._message = formatString("save_page_msg", [FilePicker.file.path], 1);
     this.update();
   }
 };
 
 function DebugMode() {
   Control.call(this);
@@ -360,17 +360,17 @@ var AboutWebRTC = {
       return connections;
     }
 
     let reports = [...this._reports];
     reports.sort((a, b) => b.timestamp - a.timestamp);
     for (let report of reports) {
       let peerConnection = new PeerConnection(report);
       connections.appendChild(peerConnection.render());
-    };
+    }
 
     return connections;
   },
 
   renderConnectionLog: function() {
     let content = document.createElement("div");
     content.className = "log";
 
@@ -399,17 +399,17 @@ var AboutWebRTC = {
     });
     sectionCtrl.appendChild(foldEffect.render());
     content.appendChild(sectionCtrl);
 
     for (let line of this._log) {
       elem = document.createElement("p");
       elem.textContent = line;
       div.appendChild(elem);
-    };
+    }
 
     content.appendChild(div);
     return content;
   }
 };
 
 function PeerConnection(report) {
   this._report = report;
@@ -515,42 +515,42 @@ RTPStats.prototype = {
 
     heading.textContent = getString("rtp_stats_heading");
     div.appendChild(heading);
 
     this.generateRTPStats();
 
     for (let statSet of this._stats) {
       div.appendChild(this.renderRTPStatSet(statSet));
-    };
+    }
 
     return div;
   },
 
   generateRTPStats: function() {
     let remoteRtpStats = {};
     let rtpStats = [].concat((this._report.inboundRTPStreamStats  || []),
                              (this._report.outboundRTPStreamStats || []));
 
     // Generate an id-to-streamStat index for each streamStat that is marked
     // as a remote. This will be used next to link the remote to its local side.
     for (let stats of rtpStats) {
       if (stats.isRemote) {
         remoteRtpStats[stats.id] = stats;
       }
-    };
+    }
 
     // If a streamStat has a remoteId attribute, create a remoteRtpStats
     // attribute that references the remote streamStat entry directly.
     // That is, the index generated above is merged into the returned list.
     for (let stats of rtpStats) {
       if (stats.remoteId) {
         stats.remoteRtpStats = remoteRtpStats[stats.remoteId];
       }
-    };
+    }
 
     this._stats = rtpStats;
   },
 
   renderAvStats: function(stats) {
     let statsString = "";
 
     if (stats.mozAvSyncDelay) {
@@ -661,17 +661,17 @@ ICEStats.prototype = {
       tbody.push([
         stat.localcandidate || "",
         stat.remotecandidate || "",
         stat.state || "",
         stat.priority || "",
         stat.nominated || "",
         stat.selected || ""
       ]);
-    };
+    }
 
     let statsTable = new SimpleTable(
       [getString("local_candidate"), getString("remote_candidate"), getString("ice_state"),
        getString("priority"), getString("nominated"), getString("selected")],
       tbody);
 
     let div = document.createElement("div");
     let heading = document.createElement("h4");
@@ -713,26 +713,26 @@ ICEStats.prototype = {
         matched[local.id] = true;
 
         if (remote) {
           stat.remotecandidate = this.candidateToString(remote);
           matched[remote.id] = true;
         }
         stats.push(stat);
       }
-    };
+    }
 
     for (let c of candidates.values()) {
       if (matched[c.id])
         continue;
 
       stat = {};
       stat[c.type] = this.candidateToString(c);
       stats.push(stat);
-    };
+    }
 
     return stats.sort((a, b) => (b.priority || 0) - (a.priority || 0));
   },
 
   candidateToString: function(c) {
     if (!c) {
       return "*";
     }
@@ -755,45 +755,45 @@ function SimpleTable(heading, data) {
 SimpleTable.prototype = {
   renderRow: function(list) {
     let row = document.createElement("tr");
 
     for (let elem of list) {
       let cell = document.createElement("td");
       cell.textContent = elem;
       row.appendChild(cell);
-    };
+    }
 
     return row;
   },
 
   render: function() {
     let table = document.createElement("table");
 
     if (this._heading) {
       table.appendChild(this.renderRow(this._heading));
     }
 
     for (let row of this._data) {
       table.appendChild(this.renderRow(row));
-    };
+    }
 
     return table;
   }
 };
 
 function FoldEffect(targetElem, options = {}) {
   if (targetElem) {
     this._showMsg = "\u25BC " + (options.showMsg || getString("fold_show_msg"));
     this._showHint = options.showHint || getString("fold_show_hint");
     this._hideMsg = "\u25B2 " + (options.hideMsg || getString("fold_hide_msg"));
     this._hideHint = options.hideHint || getString("fold_hide_hint");
     this._target = targetElem;
   }
-};
+}
 
 FoldEffect.prototype = {
   render: function() {
     this._target.classList.add("fold-target");
 
     let ctrl = document.createElement("div");
     this._trigger = ctrl;
     ctrl.className = "fold-trigger";
@@ -826,16 +826,16 @@ FoldEffect.prototype = {
   }
 };
 
 FoldEffect._sections = [];
 
 FoldEffect.expandAll = function() {
   for (let section of this._sections) {
     section.open();
-  };
+  }
 };
 
 FoldEffect.collapseAll = function() {
   for (let section of this._sections) {
     section.close();
-  };
+  }
 };
--- a/toolkit/content/customizeToolbar.js
+++ b/toolkit/content/customizeToolbar.js
@@ -771,17 +771,17 @@ function onToolbarDrop(aEvent)
         draggedItemId != "spring" &&
         draggedItemId != "spacer")
       gPaletteBox.removeChild(draggedPaletteWrapper);
   }
 
   gCurrentDragOverItem = null;
 
   toolboxChanged();
-};
+}
 
 function onPaletteDragOver(aEvent)
 {
   if (isUnwantedDragEvent(aEvent)) {
     return;
   }
   var documentId = gToolboxDocument.documentElement.id;
   if (aEvent.dataTransfer.types.contains("text/toolbarwrapper-id/" + documentId.toLowerCase()))
--- a/toolkit/content/widgets/notification.xml
+++ b/toolkit/content/widgets/notification.xml
@@ -351,17 +351,17 @@
                 bgcolor = prefService.getCharPref("browser.display.background_color");
 
                 var win = content.contentWindow;
                 var context = canvas.getContext("2d");
                 context.globalAlpha = 0.5;
                 context.drawWindow(win, win.scrollX, win.scrollY,
                                    width, height, bgcolor);
               }
-              catch(ex) { };
+              catch(ex) { }
             }
             else if (canvas) {
               canvas.parentNode.removeChild(canvas);
               this._blockingCanvas = null;
               let content = this.firstChild;
               if (content)
                 content.collapsed = false;
             }
--- a/toolkit/content/widgets/resizer.xml
+++ b/toolkit/content/widgets/resizer.xml
@@ -17,17 +17,17 @@
         // don't do this for viewport resizers; causes a crash related to
         // bugs 563665 and 581536 otherwise
         if (this.parentNode == this.ownerDocument.documentElement)
           return;
 
         // if the direction is rtl, set the rtl attribute so that the
         // stylesheet can use this to make the cursor appear properly
         var cs = window.getComputedStyle(this, "");
-        if (cs.writingMode === undefined || cs.writingMode == "horizontal-tb") {;
+        if (cs.writingMode === undefined || cs.writingMode == "horizontal-tb") {
           if (cs.direction == "rtl") {
             this.setAttribute("rtl", "true");
           }
         } else {
           if (cs.writingMode == "vertical-rl") {
             this.setAttribute("rtl", "true");
           }
         }
--- a/toolkit/crashreporter/test/unit/test_crash_AsyncShutdown.js
+++ b/toolkit/crashreporter/test/unit/test_crash_AsyncShutdown.js
@@ -45,17 +45,17 @@ function setup_osfile_crash_noerror() {
   Services.prefs.setIntPref("toolkit.asyncshutdown.crash_timeout", 1);
   Services.prefs.setBoolPref("toolkit.osfile.native", false);
 
   OS.File.profileBeforeChange.addBlocker("Adding a blocker that will never be resolved", () => Promise.defer().promise);
   OS.File.getCurrentDirectory();
 
   Services.obs.notifyObservers(null, "profile-before-change", null);
   dump("Waiting for crash\n");
-};
+}
 
 function after_osfile_crash_noerror(mdump, extra) {
   do_print("after OS.File crash: " + extra.AsyncShutdownTimeout);
   let info = JSON.parse(extra.AsyncShutdownTimeout);
   let state = info.conditions[0].state;
   do_print("Keys: " + Object.keys(state).join(", "));
   do_check_eq(info.phase, "profile-before-change");
   do_check_true(state.launched);
@@ -76,17 +76,17 @@ function setup_osfile_crash_exn() {
   Services.prefs.setIntPref("toolkit.asyncshutdown.crash_timeout", 1);
   Services.prefs.setBoolPref("toolkit.osfile.native", false);
 
   OS.File.profileBeforeChange.addBlocker("Adding a blocker that will never be resolved", () => Promise.defer().promise);
   OS.File.read("I do not exist");
 
   Services.obs.notifyObservers(null, "profile-before-change", null);
   dump("Waiting for crash\n");
-};
+}
 
 function after_osfile_crash_exn(mdump, extra) {
   do_print("after OS.File crash: " + extra.AsyncShutdownTimeout);
   let info = JSON.parse(extra.AsyncShutdownTimeout);
   let state = info.conditions[0].state;
   do_print("Keys: " + Object.keys(state).join(", "));
   do_check_eq(info.phase, "profile-before-change");
   do_check_false(state.shutdown);
--- a/toolkit/crashreporter/test/unit/test_crash_terminator.js
+++ b/toolkit/crashreporter/test/unit/test_crash_terminator.js
@@ -22,17 +22,17 @@ function setup_crash() {
   // Pick an arbitrary notification
   terminator.observe(null, "xpcom-will-shutdown", null);
   terminator.observe(null, "profile-before-change", null);
 
   dump("Waiting (actively) for the crash\n");
   while(true) {
     Services.tm.currentThread.processNextEvent(true);
   }
-};
+}
 
 
 function after_crash(mdump, extra) {
   do_print("Crash signature: " + JSON.stringify(extra, null, "\t"));
   Assert.equal(extra.ShutdownProgress, "profile-before-change");
 }
 
 function run_test() {
--- a/toolkit/identity/Sandbox.jsm
+++ b/toolkit/identity/Sandbox.jsm
@@ -119,17 +119,17 @@ this.Sandbox.prototype = {
       if (event.target != self._frame.contentDocument) {
         return;
       }
       self._frame.removeEventListener(
         "DOMWindowCreated", _makeSandboxContentLoaded, true
       );
 
       aCallback(self);
-    };
+    }
 
     this._frame.addEventListener("DOMWindowCreated",
                                  _makeSandboxContentLoaded,
                                  true);
 
     // Load the iframe.
     let webNav = this._frame.contentWindow
                             .QueryInterface(Ci.nsIInterfaceRequestor)
--- a/toolkit/identity/tests/unit/head_identity.js
+++ b/toolkit/identity/tests/unit/head_identity.js
@@ -160,17 +160,17 @@ function makeObserver(aObserveTopic, aOb
 // when ready, invoke callback with the identity
 function setup_test_identity(identity, cert, cb) {
   // set up the store so that we're supposed to be logged in
   let store = get_idstore();
 
   function keyGenerated(err, kpo) {
     store.addIdentity(identity, kpo, cert);
     cb();
-  };
+  }
 
   jwcrypto.generateKeyPair("DS160", keyGenerated);
 }
 
 // takes a list of functions and returns a function that
 // when called the first time, calls the first func,
 // then the next time the second, etc.
 function call_sequentially() {
--- a/toolkit/identity/tests/unit/test_jwcrypto.js
+++ b/toolkit/identity/tests/unit/test_jwcrypto.js
@@ -84,17 +84,17 @@ function test_rsa() {
     let sig = kpo.sign("This is a message to sign");
 
     do_check_neq(sig, null);
     do_check_eq(typeof sig, "string");
     do_check_true(sig.length > 1);
 */
     do_test_finished();
     run_next_test();
-  };
+  }
 
   jwcrypto.generateKeyPair("RS256", checkRSA);
 }
 
 function test_dsa() {
   do_test_pending();
   function checkDSA(err, kpo) {
     do_check_neq(kpo, undefined);
@@ -115,17 +115,17 @@ function test_dsa() {
     let sig = kpo.sign("This is a message to sign");
 
     do_check_neq(sig, null);
     do_check_eq(typeof sig, "string");
     do_check_true(sig.length > 1);
 */
     do_test_finished();
     run_next_test();
-  };
+  }
 
   jwcrypto.generateKeyPair("DS160", checkDSA);
 }
 
 function test_get_assertion_with_offset() {
   do_test_pending();
 
 
@@ -256,17 +256,17 @@ function extractComponents(signedObject)
     do_check_true(!!payload[field]);
   }
 
   return {header: header,
           payload: payload,
           headerSegment: headerSegment,
           payloadSegment: payloadSegment,
           cryptoSegment: cryptoSegment};
-};
+}
 
 var TESTS = [
   test_sanity,
   test_generate,
   test_get_assertion,
   test_get_assertion_with_offset,
   test_assertion_lifetime,
   test_audience_encoding_bug972582,
--- a/toolkit/modules/Finder.jsm
+++ b/toolkit/modules/Finder.jsm
@@ -376,17 +376,17 @@ Finder.prototype = {
             range.endContainer == foundRange.endContainer &&
             range.endOffset == foundRange.endOffset);
         }
       }
       if (aStats.total == aMatchLimit) {
         aStats.total = -1;
         break;
       }
-    };
+    }
 
     return aStats;
   },
 
   /**
    * Basic wrapper around nsIFind that provides a generator yielding
    * a range each time an occurence of `aWord` string is found.
    *
--- a/toolkit/modules/Log.jsm
+++ b/toolkit/modules/Log.jsm
@@ -629,17 +629,17 @@ StructuredFormatter.prototype = {
 }
 
 /**
  * Test an object to see if it is a Mozilla JS Error.
  */
 function isError(aObj) {
   return (aObj && typeof(aObj) == 'object' && "name" in aObj && "message" in aObj &&
           "fileName" in aObj && "lineNumber" in aObj && "stack" in aObj);
-};
+}
 
 /*
  * Parameter Formatters
  * These massage an object used as a parameter for a LogMessage into
  * a string representation of the object.
  */
 
 function ParameterFormatter() {
--- a/toolkit/modules/Sntp.jsm
+++ b/toolkit/modules/Sntp.jsm
@@ -164,17 +164,17 @@ Sntp.prototype = {
       let data = new DataView(buffer);
       data.setUint8(0, NTP_MODE_CLIENT | (NTP_VERSION << 3));
       data.setUint32(TRANSMIT_TIME_OFFSET, s, false);
       data.setUint32(TRANSMIT_TIME_OFFSET + 4, f, false);
 
       return String.fromCharCode.apply(null, new Uint8Array(buffer));
     }
 
-    function SNTPListener() {};
+    function SNTPListener() {}
     SNTPListener.prototype = {
       onStartRequest: function onStartRequest(request, context) {
       },
 
       onStopRequest: function onStopRequest(request, context, status) {
         if (!Components.isSuccessCode(status)) {
           debug ("Connection failed");
           this._requesting = false;
--- a/toolkit/modules/Task.jsm
+++ b/toolkit/modules/Task.jsm
@@ -119,17 +119,17 @@ var gMaintainStack = false;
  * @return Iterator<string>
  */
 function* linesOf(string) {
   let reLine = /([^\r\n])+/g;
   let match;
   while ((match = reLine.exec(string))) {
     yield [match[0], match.index];
   }
-};
+}
 
 /**
  * Detect whether a value is a generator.
  *
  * @param aValue
  *        The value to identify.
  * @return A boolean indicating whether the value is a generator.
  */
--- a/toolkit/modules/tests/browser/browser_Finder.js
+++ b/toolkit/modules/tests/browser/browser_Finder.js
@@ -17,17 +17,17 @@ add_task(function* () {
     }
   };
   finder.addResultListener(listener);
 
   function waitForFind() {
     return new Promise(resolve => {
       listener.onFindResult = resolve;
     })
-  };
+  }
 
   let promiseFind = waitForFind();
   finder.highlight(true, "content");
   let findResult = yield promiseFind;
   is(findResult.result, Ci.nsITypeAheadFind.FIND_FOUND, "should find string");
 
   promiseFind = waitForFind();
   finder.highlight(true, "Bla");
--- a/toolkit/mozapps/extensions/AddonManager.jsm
+++ b/toolkit/mozapps/extensions/AddonManager.jsm
@@ -976,17 +976,17 @@ var AddonManagerInternal = {
               AddonManagerPrivate.recordException("AMI", "provider " + url, "no startup()");
             }
             logger.debug("Loaded provider scope for " + url + ": " + Object.keys(scope).toSource());
           }
           catch (e) {
             AddonManagerPrivate.recordException("AMI", "provider " + url + " load failed", e);
             logger.error("Exception loading default provider \"" + url + "\"", e);
           }
-        };
+        }
       }
 
       // Load any providers registered in the category manager
       let catman = Cc["@mozilla.org/categorymanager;1"].
                    getService(Ci.nsICategoryManager);
       let entries = catman.enumerateCategory(CATEGORY_PROVIDER_MODULE);
       while (entries.hasMoreElements()) {
         let entry = entries.getNext().QueryInterface(Ci.nsISupportsCString).data;
--- a/toolkit/mozapps/extensions/internal/AddonRepository_SQLiteMigrator.jsm
+++ b/toolkit/mozapps/extensions/internal/AddonRepository_SQLiteMigrator.jsm
@@ -392,17 +392,17 @@ this.AddonRepository_SQLiteMigrator = {
     // This is intentionally not an AddonSearchResult object in order
     // to allow AddonDatabase._parseAddon to parse it, same as if it
     // was read from the JSON database.
 
     let addon = { icons: {} };
 
     for (let prop of PROP_SINGLE) {
       addon[prop] = aRow.getResultByName(prop)
-    };
+    }
 
     return addon;
   },
 
   /**
    * Make a developer from an asynchronous row
    *
    * @param  aRow
--- a/toolkit/mozapps/extensions/internal/XPIProvider.jsm
+++ b/toolkit/mozapps/extensions/internal/XPIProvider.jsm
@@ -4102,17 +4102,17 @@ this.XPIProvider = {
             logger.debug("updateAddonRepositoryData got info for " + addon.id);
             addon._repositoryAddon = aRepoAddon;
             addon.compatibilityOverrides = aRepoAddon.compatibilityOverrides;
             this.updateAddonDisabledState(addon);
           }
 
           notifyComplete();
         });
-      };
+      }
     });
   },
 
   /**
    * When the previously selected theme is removed this method will be called
    * to enable the default theme.
    */
   enableDefaultTheme: function() {
--- a/toolkit/mozapps/extensions/internal/XPIProviderUtils.js
+++ b/toolkit/mozapps/extensions/internal/XPIProviderUtils.js
@@ -348,17 +348,17 @@ function DBAddonInternal(aLoaded) {
       for (let install of XPIProvider.installs) {
         if (install.state == AddonManager.STATE_INSTALLED &&
             !(install.addon.inDatabase) &&
             install.addon.id == this.id &&
             install.installLocation == this._installLocation) {
           delete this.pendingUpgrade;
           return this.pendingUpgrade = install.addon;
         }
-      };
+      }
       return null;
     });
 }
 
 DBAddonInternal.prototype = Object.create(AddonInternal.prototype);
 Object.assign(DBAddonInternal.prototype, {
   applyCompatibilityUpdate: function(aUpdate, aSyncCompatibility) {
     let wasCompatible = this.isCompatible;
@@ -656,17 +656,17 @@ this.XPIDatabase = {
         // the preference are updated.
       }
       // If we got here, we probably have good data
       // Make AddonInternal instances from the loaded data and save them
       let addonDB = new Map();
       for (let loadedAddon of inputAddons.addons) {
         let newAddon = new DBAddonInternal(loadedAddon);
         addonDB.set(newAddon._key, newAddon);
-      };
+      }
       parseTimer.done();
       this.addonDB = addonDB;
       logger.debug("Successfully read XPI database");
       this.initialized = true;
     }
     catch(e) {
       // If we catch and log a SyntaxError from the JSON
       // parser, the xpcshell test harness fails the test for us: bug 870828
--- a/toolkit/mozapps/extensions/test/browser/browser_searching.js
+++ b/toolkit/mozapps/extensions/test/browser/browser_searching.js
@@ -264,17 +264,17 @@ function get_expected_results(aSortBy, a
  *         Boolean representing if local results are being shown
  */
 function check_results(aQuery, aSortBy, aReverseOrder, aShowLocal) {
 
   var xpinstall_enabled = true;
   try {
     xpinstall_enabled = Services.prefs.getBoolPref(PREF_XPI_ENABLED);
   }
-  catch (e) {};
+  catch (e) {}
 
   // When XPI Instalation is disabled, those buttons are hidden and unused
   if (xpinstall_enabled) {
     var localFilterSelected = gManagerWindow.document.getElementById("search-filter-local").selected;
     var remoteFilterSelected = gManagerWindow.document.getElementById("search-filter-remote").selected;
     is(localFilterSelected, aShowLocal, "Local filter should be selected if showing local items");
     is(remoteFilterSelected, !aShowLocal, "Remote filter should be selected if showing remote items");
   }
--- a/toolkit/mozapps/extensions/test/xpcshell/test_DeferredSave.js
+++ b/toolkit/mozapps/extensions/test/xpcshell/test_DeferredSave.js
@@ -62,17 +62,17 @@ function DeferredSaveTester(aDataProvide
       do_print("writeAtomic: " + aFile + " data: '" + aData + "', " + aOptions.toSource());
       tester.writtenData = aData;
       tester.waDeferred = Promise.defer();
       tester.writeHandler(tester);
       return tester.waDeferred.promise;
     };
 
   return tester;
-};
+}
 
 /**
  * Install a mock nsITimer factory that triggers on the next spin of
  * the event loop after it is scheduled
  */
 function setQuickMockTimer() {
   let quickTimer = {
     initWithCallback: function(aFunction, aDelay, aType) {
--- a/toolkit/mozapps/extensions/test/xpcshell/test_bug659772.js
+++ b/toolkit/mozapps/extensions/test/xpcshell/test_bug659772.js
@@ -330,11 +330,11 @@ function run_test_2() {
         a3.uninstall();
         a4.uninstall();
         restartManager();
 
         shutdownManager();
 
         do_test_finished();
       }));
-    };
+    }
   });
 }
--- a/toolkit/mozapps/extensions/test/xpcshell/test_gmpProvider.js
+++ b/toolkit/mozapps/extensions/test/xpcshell/test_gmpProvider.js
@@ -225,17 +225,17 @@ add_task(function* test_autoUpdatePrefPe
 
 function createMockPluginFilesIfNeeded(aFile, aPluginId) {
   function createFile(aFileName) {
     let f = aFile.clone();
     f.append(aFileName);
     if (!f.exists()) {
       f.create(Ci.nsIFile.NORMAL_FILE_TYPE, FileUtils.PERMS_FILE);
     }
-  };
+  }
 
   let id = aPluginId.substring(4);
   let libName = AppConstants.DLL_PREFIX + id + AppConstants.DLL_SUFFIX;
 
   createFile(libName);
   createFile(id + ".info");
   if (aPluginId == "gmp-eme-adobe")
     createFile(id + ".voucher");
--- a/toolkit/mozapps/extensions/test/xpcshell/test_no_addons.js
+++ b/toolkit/mozapps/extensions/test/xpcshell/test_no_addons.js
@@ -67,17 +67,17 @@ function* trigger_db_load() {
   let addonDefer = Promise.defer();
   AddonManager.getAddonsByTypes(['extension'], addonDefer.resolve);
   let addonList = yield addonDefer.promise;
 
   do_check_eq(addonList.length, 0);
   check_empty_state();
 
   yield true;
-};
+}
 add_task(trigger_db_load);
 
 // Now restart the manager and check again
 add_task(function* restart_and_recheck() {
   restartManager();
   check_empty_state();
   yield true;
 });
--- a/toolkit/mozapps/extensions/test/xpcshell/test_provider_markSafe.js
+++ b/toolkit/mozapps/extensions/test/xpcshell/test_provider_markSafe.js
@@ -20,17 +20,17 @@ function mockAddonProvider(name) {
     },
 
     get name() {
       return name;
     },
   };
 
   return mockProvider;
-};
+}
 
 function run_test() {
   run_next_test();
 }
 
 add_task(function* testMarkSafe() {
   do_print("Starting with provider normally");
   let provider = mockAddonProvider("Mock1");
--- a/toolkit/mozapps/extensions/test/xpcshell/test_provider_shutdown.js
+++ b/toolkit/mozapps/extensions/test/xpcshell/test_provider_shutdown.js
@@ -30,17 +30,17 @@ function mockAddonProvider(aName) {
   mockProvider.donePromise = new Promise((resolve, reject) => {
     mockProvider.doneResolve = resolve;
     mockProvider.doneReject = reject;
   });
   mockProvider.shutdownPromise = new Promise((resolve, reject) => {
     mockProvider.shutdownResolve = resolve;
   });
   return mockProvider;
-};
+}
 
 function run_test() {
   run_next_test();
 }
 
 // Helper to find a particular shutdown blocker's status in the JSON blob
 function findInStatus(aStatus, aName) {
   for (let {name, state} of aStatus.state) {
--- a/toolkit/mozapps/extensions/test/xpcshell/test_provider_unsafe_access_shutdown.js
+++ b/toolkit/mozapps/extensions/test/xpcshell/test_provider_unsafe_access_shutdown.js
@@ -24,17 +24,17 @@ function mockAddonProvider(name) {
     },
 
     get name() {
       return name;
     },
   };
 
   return mockProvider;
-};
+}
 
 function run_test() {
   run_next_test();
 }
 
 add_task(function* unsafeProviderShutdown() {
   let firstProvider = mockAddonProvider("Mock1");
   AddonManagerPrivate.registerProvider(firstProvider);
--- a/toolkit/mozapps/extensions/test/xpcshell/test_provider_unsafe_access_startup.js
+++ b/toolkit/mozapps/extensions/test/xpcshell/test_provider_unsafe_access_startup.js
@@ -23,17 +23,17 @@ function mockAddonProvider(name) {
     },
 
     get name() {
       return name;
     },
   };
 
   return mockProvider;
-};
+}
 
 function run_test() {
   run_next_test();
 }
 
 add_task(function* unsafeProviderStartup() {
   let secondProvider = null;