From 32bc201dee640110a3c9b7b0bf41dce9a58f179c Mon Sep 17 00:00:00 2001 From: Jeff Walden Date: Mon, 6 Nov 2017 13:21:06 -0800 Subject: [PATCH] Bug 1424394 - Change ErrorReporter::reportErrorNoOffset to take a va_list of parameters, not direct varargs. r=Yoric --HG-- extra : rebase_source : 2bfe40572fc2247b7973150afec01d4258e7b168 --- js/src/frontend/ErrorReporter.h | 25 +++++++++++++++++++++++-- js/src/frontend/TokenStream.cpp | 7 +------ js/src/frontend/TokenStream.h | 2 +- 3 files changed, 25 insertions(+), 9 deletions(-) diff --git a/js/src/frontend/ErrorReporter.h b/js/src/frontend/ErrorReporter.h index 721db9988a85..db2b8edb4b6c 100644 --- a/js/src/frontend/ErrorReporter.h +++ b/js/src/frontend/ErrorReporter.h @@ -1,18 +1,39 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * vim: set ts=8 sts=4 et sw=4 tw=99: + * 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/. */ + #ifndef frontend_ErrorReporter_h #define frontend_ErrorReporter_h +#include // for va_list +#include // for size_t +#include // for uint32_t + +#include "jsapi.h" // for JS::ReadOnlyCompileOptions + namespace js { namespace frontend { class ErrorReporter { public: - virtual const ReadOnlyCompileOptions& options() const = 0; + virtual const JS::ReadOnlyCompileOptions& options() const = 0; virtual void lineNumAndColumnIndex(size_t offset, uint32_t* line, uint32_t* column) const = 0; virtual size_t offset() const = 0; virtual bool hasTokenizationStarted() const = 0; - virtual void reportErrorNoOffset(unsigned errorNumber, ...) = 0; + virtual void reportErrorNoOffsetVA(unsigned errorNumber, va_list args) = 0; virtual const char* getFilename() const = 0; + + void reportErrorNoOffset(unsigned errorNumber, ...) { + va_list args; + va_start(args, errorNumber); + + reportErrorNoOffsetVA(errorNumber, args); + + va_end(args); + } }; } // namespace frontend diff --git a/js/src/frontend/TokenStream.cpp b/js/src/frontend/TokenStream.cpp index d9e0ab5275a1..6a88bd91181e 100644 --- a/js/src/frontend/TokenStream.cpp +++ b/js/src/frontend/TokenStream.cpp @@ -858,17 +858,12 @@ TokenStream::reportError(unsigned errorNumber, ...) } void -TokenStreamAnyChars::reportErrorNoOffset(unsigned errorNumber, ...) +TokenStreamAnyChars::reportErrorNoOffsetVA(unsigned errorNumber, va_list args) { - va_list args; - va_start(args, errorNumber); - ErrorMetadata metadata; computeErrorMetadataNoOffset(&metadata); ReportCompileError(cx, Move(metadata), nullptr, JSREPORT_ERROR, errorNumber, args); - - va_end(args); } bool diff --git a/js/src/frontend/TokenStream.h b/js/src/frontend/TokenStream.h index a92e6accb73a..00eb53716d46 100644 --- a/js/src/frontend/TokenStream.h +++ b/js/src/frontend/TokenStream.h @@ -585,7 +585,7 @@ class TokenStreamAnyChars: public ErrorReporter virtual const char* getFilename() const override { return filename; } virtual bool hasTokenizationStarted() const override; virtual void lineNumAndColumnIndex(size_t offset, uint32_t* line, uint32_t* column) const override; - virtual void reportErrorNoOffset(unsigned errorNumber, ...) override; + virtual void reportErrorNoOffsetVA(unsigned errorNumber, va_list args) override; virtual size_t offset() const override; protected: