mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-26 19:55:39 +00:00
Bug 1472569 - |this->|-qualify a bunch of function calls on |using Base::foo| members that gcc 8 completely chokes on and grossly misunderstands. r=arai
--HG-- extra : rebase_source : 2b14d2f9f18f2b2ecaed24d4ca23b4824df668c7
This commit is contained in:
parent
05c2a6ee1f
commit
51dd0dc9df
@ -494,13 +494,13 @@ TokenStreamChars<char16_t, AnyCharsAccess>::getCodePoint(int32_t* cp)
|
||||
{
|
||||
TokenStreamAnyChars& anyChars = anyCharsAccess();
|
||||
|
||||
if (MOZ_UNLIKELY(sourceUnits.atEnd())) {
|
||||
if (MOZ_UNLIKELY(this->sourceUnits.atEnd())) {
|
||||
anyChars.flags.isEOF = true;
|
||||
*cp = EOF;
|
||||
return true;
|
||||
}
|
||||
|
||||
int32_t c = sourceUnits.getCodeUnit();
|
||||
int32_t c = this->sourceUnits.getCodeUnit();
|
||||
|
||||
do {
|
||||
// Normalize the char16_t if it was a newline.
|
||||
@ -509,8 +509,8 @@ TokenStreamChars<char16_t, AnyCharsAccess>::getCodePoint(int32_t* cp)
|
||||
|
||||
if (MOZ_UNLIKELY(c == '\r')) {
|
||||
// If it's a \r\n sequence: treat as a single EOL, skip over the \n.
|
||||
if (MOZ_LIKELY(!sourceUnits.atEnd()))
|
||||
sourceUnits.matchCodeUnit('\n');
|
||||
if (MOZ_LIKELY(!this->sourceUnits.atEnd()))
|
||||
this->sourceUnits.matchCodeUnit('\n');
|
||||
|
||||
break;
|
||||
}
|
||||
@ -536,7 +536,7 @@ TokenStreamChars<char16_t, AnyCharsAccess>::getNonAsciiCodePoint(int32_t lead, i
|
||||
MOZ_ASSERT(lead != EOF);
|
||||
MOZ_ASSERT(!isAsciiCodePoint(lead),
|
||||
"ASCII code unit/point must be handled separately");
|
||||
MOZ_ASSERT(lead == sourceUnits.previousCodeUnit(),
|
||||
MOZ_ASSERT(lead == this->sourceUnits.previousCodeUnit(),
|
||||
"getNonAsciiCodePoint called incorrectly");
|
||||
|
||||
// The code point is usually |lead|: overwrite later if needed.
|
||||
@ -570,15 +570,15 @@ TokenStreamChars<char16_t, AnyCharsAccess>::getNonAsciiCodePoint(int32_t lead, i
|
||||
}
|
||||
|
||||
// Also handle a lead surrogate not paired with a trailing surrogate.
|
||||
if (MOZ_UNLIKELY(sourceUnits.atEnd() ||
|
||||
!unicode::IsTrailSurrogate(sourceUnits.peekCodeUnit())))
|
||||
if (MOZ_UNLIKELY(this->sourceUnits.atEnd() ||
|
||||
!unicode::IsTrailSurrogate(this->sourceUnits.peekCodeUnit())))
|
||||
{
|
||||
MOZ_ASSERT(!SourceUnits::isRawEOLChar(*codePoint));
|
||||
return true;
|
||||
}
|
||||
|
||||
// Otherwise we have a multi-unit code point.
|
||||
*codePoint = unicode::UTF16Decode(lead, sourceUnits.getCodeUnit());
|
||||
*codePoint = unicode::UTF16Decode(lead, this->sourceUnits.getCodeUnit());
|
||||
MOZ_ASSERT(!SourceUnits::isRawEOLChar(*codePoint));
|
||||
return true;
|
||||
}
|
||||
@ -587,7 +587,7 @@ template<class AnyCharsAccess>
|
||||
void
|
||||
TokenStreamChars<char16_t, AnyCharsAccess>::ungetCodePointIgnoreEOL(uint32_t codePoint)
|
||||
{
|
||||
MOZ_ASSERT(!sourceUnits.atStart());
|
||||
MOZ_ASSERT(!this->sourceUnits.atStart());
|
||||
|
||||
unsigned numUnits = 0;
|
||||
char16_t units[2];
|
||||
@ -603,13 +603,13 @@ template<class AnyCharsAccess>
|
||||
void
|
||||
TokenStreamChars<char16_t, AnyCharsAccess>::ungetLineTerminator()
|
||||
{
|
||||
sourceUnits.ungetCodeUnit();
|
||||
this->sourceUnits.ungetCodeUnit();
|
||||
|
||||
char16_t last = sourceUnits.peekCodeUnit();
|
||||
char16_t last = this->sourceUnits.peekCodeUnit();
|
||||
MOZ_ASSERT(SourceUnits::isRawEOLChar(last));
|
||||
|
||||
if (last == '\n')
|
||||
sourceUnits.ungetOptionalCRBeforeLF();
|
||||
this->sourceUnits.ungetOptionalCRBeforeLF();
|
||||
|
||||
anyCharsAccess().undoInternalUpdateLineInfoForEOL();
|
||||
}
|
||||
@ -641,8 +641,8 @@ template<typename CharT, class AnyCharsAccess>
|
||||
bool
|
||||
TokenStreamSpecific<CharT, AnyCharsAccess>::advance(size_t position)
|
||||
{
|
||||
const CharT* end = sourceUnits.codeUnitPtrAt(position);
|
||||
while (sourceUnits.addressOfNextCodeUnit() < end) {
|
||||
const CharT* end = this->sourceUnits.codeUnitPtrAt(position);
|
||||
while (this->sourceUnits.addressOfNextCodeUnit() < end) {
|
||||
int32_t c;
|
||||
if (!getCodePoint(&c))
|
||||
return false;
|
||||
@ -650,7 +650,7 @@ TokenStreamSpecific<CharT, AnyCharsAccess>::advance(size_t position)
|
||||
|
||||
TokenStreamAnyChars& anyChars = anyCharsAccess();
|
||||
Token* cur = const_cast<Token*>(&anyChars.currentToken());
|
||||
cur->pos.begin = sourceUnits.offset();
|
||||
cur->pos.begin = this->sourceUnits.offset();
|
||||
MOZ_MAKE_MEM_UNDEFINED(&cur->type, sizeof(cur->type));
|
||||
anyChars.lookahead = 0;
|
||||
return true;
|
||||
@ -662,7 +662,7 @@ TokenStreamSpecific<CharT, AnyCharsAccess>::seek(const Position& pos)
|
||||
{
|
||||
TokenStreamAnyChars& anyChars = anyCharsAccess();
|
||||
|
||||
sourceUnits.setAddressOfNextCodeUnit(pos.buf, /* allowPoisoned = */ true);
|
||||
this->sourceUnits.setAddressOfNextCodeUnit(pos.buf, /* allowPoisoned = */ true);
|
||||
anyChars.flags = pos.flags;
|
||||
anyChars.lineno = pos.lineno;
|
||||
anyChars.linebase = pos.linebase;
|
||||
@ -832,12 +832,12 @@ TokenStreamSpecific<CharT, AnyCharsAccess>::computeLineOfContext(ErrorMetadata*
|
||||
|
||||
// The window must start within the portion of the current line that we
|
||||
// actually have in our buffer.
|
||||
if (windowStart < sourceUnits.startOffset())
|
||||
windowStart = sourceUnits.startOffset();
|
||||
if (windowStart < this->sourceUnits.startOffset())
|
||||
windowStart = this->sourceUnits.startOffset();
|
||||
|
||||
// The window must end within the current line, no later than
|
||||
// windowRadius after offset.
|
||||
size_t windowEnd = sourceUnits.findEOLMax(offset, windowRadius);
|
||||
size_t windowEnd = this->sourceUnits.findEOLMax(offset, windowRadius);
|
||||
size_t windowLength = windowEnd - windowStart;
|
||||
MOZ_ASSERT(windowLength <= windowRadius * 2);
|
||||
|
||||
@ -956,7 +956,7 @@ TokenStreamSpecific<CharT, AnyCharsAccess>::error(unsigned errorNumber, ...)
|
||||
va_start(args, errorNumber);
|
||||
|
||||
ErrorMetadata metadata;
|
||||
if (computeErrorMetadata(&metadata, sourceUnits.offset())) {
|
||||
if (computeErrorMetadata(&metadata, this->sourceUnits.offset())) {
|
||||
TokenStreamAnyChars& anyChars = anyCharsAccess();
|
||||
ReportCompileError(anyChars.cx, std::move(metadata), nullptr, JSREPORT_ERROR, errorNumber,
|
||||
args);
|
||||
@ -998,19 +998,19 @@ template<typename CharT, class AnyCharsAccess>
|
||||
uint32_t
|
||||
GeneralTokenStreamChars<CharT, AnyCharsAccess>::matchUnicodeEscape(uint32_t* codePoint)
|
||||
{
|
||||
MOZ_ASSERT(sourceUnits.previousCodeUnit() == '\\');
|
||||
MOZ_ASSERT(this->sourceUnits.previousCodeUnit() == '\\');
|
||||
|
||||
int32_t unit = getCodeUnit();
|
||||
if (unit != 'u') {
|
||||
// NOTE: |unit| may be EOF here.
|
||||
ungetCodeUnit(unit);
|
||||
MOZ_ASSERT(sourceUnits.previousCodeUnit() == '\\');
|
||||
MOZ_ASSERT(this->sourceUnits.previousCodeUnit() == '\\');
|
||||
return 0;
|
||||
}
|
||||
|
||||
char16_t v;
|
||||
unit = getCodeUnit();
|
||||
if (JS7_ISHEX(unit) && sourceUnits.matchHexDigits(3, &v)) {
|
||||
if (JS7_ISHEX(unit) && this->sourceUnits.matchHexDigits(3, &v)) {
|
||||
*codePoint = (JS7_UNHEX(unit) << 12) | v;
|
||||
return 5;
|
||||
}
|
||||
@ -1021,7 +1021,7 @@ GeneralTokenStreamChars<CharT, AnyCharsAccess>::matchUnicodeEscape(uint32_t* cod
|
||||
// NOTE: |unit| may be EOF here, so this ungets either one or two units.
|
||||
ungetCodeUnit(unit);
|
||||
ungetCodeUnit('u');
|
||||
MOZ_ASSERT(sourceUnits.previousCodeUnit() == '\\');
|
||||
MOZ_ASSERT(this->sourceUnits.previousCodeUnit() == '\\');
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1029,7 +1029,7 @@ template<typename CharT, class AnyCharsAccess>
|
||||
uint32_t
|
||||
GeneralTokenStreamChars<CharT, AnyCharsAccess>::matchExtendedUnicodeEscape(uint32_t* codePoint)
|
||||
{
|
||||
MOZ_ASSERT(sourceUnits.previousCodeUnit() == '{');
|
||||
MOZ_ASSERT(this->sourceUnits.previousCodeUnit() == '{');
|
||||
|
||||
int32_t unit = getCodeUnit();
|
||||
|
||||
@ -1059,8 +1059,8 @@ GeneralTokenStreamChars<CharT, AnyCharsAccess>::matchExtendedUnicodeEscape(uint3
|
||||
return gotten;
|
||||
}
|
||||
|
||||
sourceUnits.unskipCodeUnits(gotten);
|
||||
MOZ_ASSERT(sourceUnits.previousCodeUnit() == '\\');
|
||||
this->sourceUnits.unskipCodeUnits(gotten);
|
||||
MOZ_ASSERT(this->sourceUnits.previousCodeUnit() == '\\');
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1073,10 +1073,10 @@ GeneralTokenStreamChars<CharT, AnyCharsAccess>::matchUnicodeEscapeIdStart(uint32
|
||||
if (MOZ_LIKELY(unicode::IsIdentifierStart(*codePoint)))
|
||||
return length;
|
||||
|
||||
sourceUnits.unskipCodeUnits(length);
|
||||
this->sourceUnits.unskipCodeUnits(length);
|
||||
}
|
||||
|
||||
MOZ_ASSERT(sourceUnits.previousCodeUnit() == '\\');
|
||||
MOZ_ASSERT(this->sourceUnits.previousCodeUnit() == '\\');
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1089,10 +1089,10 @@ GeneralTokenStreamChars<CharT, AnyCharsAccess>::matchUnicodeEscapeIdent(uint32_t
|
||||
if (MOZ_LIKELY(unicode::IsIdentifierPart(*codePoint)))
|
||||
return true;
|
||||
|
||||
sourceUnits.unskipCodeUnits(length);
|
||||
this->sourceUnits.unskipCodeUnits(length);
|
||||
}
|
||||
|
||||
MOZ_ASSERT(sourceUnits.previousCodeUnit() == '\\');
|
||||
MOZ_ASSERT(this->sourceUnits.previousCodeUnit() == '\\');
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -1144,7 +1144,7 @@ TokenStreamSpecific<CharT, AnyCharsAccess>::getDirective(bool isMultiline,
|
||||
// Stop if we don't find |directive|. (Note that |directive| must be
|
||||
// ASCII, so there are no tricky encoding issues to consider in matching
|
||||
// UTF-8/16-agnostically.)
|
||||
if (!sourceUnits.matchCodeUnits(directive, directiveLength))
|
||||
if (!this->sourceUnits.matchCodeUnits(directive, directiveLength))
|
||||
return true;
|
||||
|
||||
if (shouldWarnDeprecated) {
|
||||
@ -1152,7 +1152,7 @@ TokenStreamSpecific<CharT, AnyCharsAccess>::getDirective(bool isMultiline,
|
||||
return false;
|
||||
}
|
||||
|
||||
charBuffer.clear();
|
||||
this->charBuffer.clear();
|
||||
|
||||
do {
|
||||
int32_t unit = peekCodeUnit();
|
||||
@ -1173,7 +1173,7 @@ TokenStreamSpecific<CharT, AnyCharsAccess>::getDirective(bool isMultiline,
|
||||
break;
|
||||
}
|
||||
|
||||
if (!charBuffer.append(unit))
|
||||
if (!this->charBuffer.append(unit))
|
||||
return false;
|
||||
|
||||
continue;
|
||||
@ -1192,7 +1192,7 @@ TokenStreamSpecific<CharT, AnyCharsAccess>::getDirective(bool isMultiline,
|
||||
return false;
|
||||
} while (true);
|
||||
|
||||
if (charBuffer.empty()) {
|
||||
if (this->charBuffer.empty()) {
|
||||
// The directive's URL was missing, but comments can contain anything,
|
||||
// so it isn't an error.
|
||||
return true;
|
||||
@ -1273,7 +1273,7 @@ GeneralTokenStreamChars<CharT, AnyCharsAccess>::badToken()
|
||||
// erroneous token has been seen, sourceUnits will not be consulted again.
|
||||
// This is true because the parser will deal with the illegal token by
|
||||
// aborting parsing immediately.
|
||||
sourceUnits.poisonInDebug();
|
||||
this->sourceUnits.poisonInDebug();
|
||||
|
||||
return false;
|
||||
};
|
||||
@ -1301,15 +1301,15 @@ template<typename CharT, class AnyCharsAccess>
|
||||
bool
|
||||
TokenStreamSpecific<CharT, AnyCharsAccess>::putIdentInCharBuffer(const CharT* identStart)
|
||||
{
|
||||
const CharT* const originalAddress = sourceUnits.addressOfNextCodeUnit();
|
||||
sourceUnits.setAddressOfNextCodeUnit(identStart);
|
||||
const CharT* const originalAddress = this->sourceUnits.addressOfNextCodeUnit();
|
||||
this->sourceUnits.setAddressOfNextCodeUnit(identStart);
|
||||
|
||||
auto restoreNextRawCharAddress =
|
||||
MakeScopeExit([this, originalAddress]() {
|
||||
this->sourceUnits.setAddressOfNextCodeUnit(originalAddress);
|
||||
});
|
||||
|
||||
charBuffer.clear();
|
||||
this->charBuffer.clear();
|
||||
do {
|
||||
int32_t unit = getCodeUnit();
|
||||
if (unit == EOF)
|
||||
@ -1318,7 +1318,7 @@ TokenStreamSpecific<CharT, AnyCharsAccess>::putIdentInCharBuffer(const CharT* id
|
||||
uint32_t codePoint;
|
||||
if (MOZ_LIKELY(isAsciiCodePoint(unit))) {
|
||||
if (unicode::IsIdentifierPart(char16_t(unit))) {
|
||||
if (!charBuffer.append(unit))
|
||||
if (!this->charBuffer.append(unit))
|
||||
return false;
|
||||
|
||||
continue;
|
||||
@ -1407,7 +1407,7 @@ TokenStreamSpecific<CharT, AnyCharsAccess>::identifierName(TokenStart start,
|
||||
} else {
|
||||
// Escape-free identifiers can be created directly from sourceUnits.
|
||||
const CharT* chars = identStart;
|
||||
size_t length = sourceUnits.addressOfNextCodeUnit() - identStart;
|
||||
size_t length = this->sourceUnits.addressOfNextCodeUnit() - identStart;
|
||||
|
||||
// Represent reserved words lacking escapes as reserved word tokens.
|
||||
if (const ReservedWordInfo* rw = FindReservedWord(chars, length)) {
|
||||
@ -1546,8 +1546,8 @@ TokenStreamSpecific<CharT, AnyCharsAccess>::decimalNumber(int32_t unit, TokenSta
|
||||
|
||||
// Most numbers are pure decimal integers without fractional component
|
||||
// or exponential notation. Handle that with optimized code.
|
||||
if (!GetDecimalInteger(anyCharsAccess().cx, numStart, sourceUnits.addressOfNextCodeUnit(),
|
||||
&dval))
|
||||
if (!GetDecimalInteger(anyCharsAccess().cx, numStart,
|
||||
this->sourceUnits.addressOfNextCodeUnit(), &dval))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -1582,8 +1582,8 @@ TokenStreamSpecific<CharT, AnyCharsAccess>::decimalNumber(int32_t unit, TokenSta
|
||||
ungetCodeUnit(unit);
|
||||
|
||||
const CharT* dummy;
|
||||
if (!js_strtod(anyCharsAccess().cx, numStart, sourceUnits.addressOfNextCodeUnit(), &dummy,
|
||||
&dval))
|
||||
if (!js_strtod(anyCharsAccess().cx, numStart, this->sourceUnits.addressOfNextCodeUnit(),
|
||||
&dummy, &dval))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -1621,8 +1621,8 @@ template<typename CharT, class AnyCharsAccess>
|
||||
MOZ_MUST_USE bool
|
||||
TokenStreamSpecific<CharT, AnyCharsAccess>::regexpLiteral(TokenStart start, TokenKind* out)
|
||||
{
|
||||
MOZ_ASSERT(sourceUnits.previousCodeUnit() == '/');
|
||||
charBuffer.clear();
|
||||
MOZ_ASSERT(this->sourceUnits.previousCodeUnit() == '/');
|
||||
this->charBuffer.clear();
|
||||
|
||||
auto ProcessNonAsciiCodePoint = [this](int32_t lead) {
|
||||
MOZ_ASSERT(lead != EOF);
|
||||
@ -1655,7 +1655,7 @@ TokenStreamSpecific<CharT, AnyCharsAccess>::regexpLiteral(TokenStart start, Toke
|
||||
|
||||
if (MOZ_LIKELY(isAsciiCodePoint(unit))) {
|
||||
if (unit == '\\') {
|
||||
if (!charBuffer.append(unit))
|
||||
if (!this->charBuffer.append(unit))
|
||||
return badToken();
|
||||
|
||||
unit = getCodeUnit();
|
||||
@ -1686,7 +1686,7 @@ TokenStreamSpecific<CharT, AnyCharsAccess>::regexpLiteral(TokenStart start, Toke
|
||||
return badToken();
|
||||
}
|
||||
|
||||
if (!charBuffer.append(unit))
|
||||
if (!this->charBuffer.append(unit))
|
||||
return badToken();
|
||||
} else {
|
||||
if (!ProcessNonAsciiCodePoint(unit))
|
||||
@ -1750,9 +1750,9 @@ TokenStreamSpecific<CharT, AnyCharsAccess>::getTokenInternal(TokenKind* const tt
|
||||
do {
|
||||
int32_t unit = getCodeUnit();
|
||||
if (MOZ_UNLIKELY(unit == EOF)) {
|
||||
MOZ_ASSERT(sourceUnits.atEnd());
|
||||
MOZ_ASSERT(this->sourceUnits.atEnd());
|
||||
anyCharsAccess().flags.isEOF = true;
|
||||
TokenStart start(sourceUnits, 0);
|
||||
TokenStart start(this->sourceUnits, 0);
|
||||
newSimpleToken(TokenKind::Eof, start, modifier, ttp);
|
||||
return true;
|
||||
}
|
||||
@ -1764,8 +1764,8 @@ TokenStreamSpecific<CharT, AnyCharsAccess>::getTokenInternal(TokenKind* const tt
|
||||
// a variable number of code points, it's easier to assume it's an
|
||||
// identifier and maybe do a little wasted work, than to unget and
|
||||
// compute and reget if whitespace.
|
||||
TokenStart start(sourceUnits, -1);
|
||||
const CharT* identStart = sourceUnits.addressOfNextCodeUnit() - 1;
|
||||
TokenStart start(this->sourceUnits, -1);
|
||||
const CharT* identStart = this->sourceUnits.addressOfNextCodeUnit() - 1;
|
||||
|
||||
int32_t codePoint;
|
||||
if (!getNonAsciiCodePoint(unit, &codePoint))
|
||||
@ -1819,7 +1819,7 @@ TokenStreamSpecific<CharT, AnyCharsAccess>::getTokenInternal(TokenKind* const tt
|
||||
// Look for an unambiguous single-char token.
|
||||
//
|
||||
if (c1kind <= OneChar_Max) {
|
||||
TokenStart start(sourceUnits, -1);
|
||||
TokenStart start(this->sourceUnits, -1);
|
||||
newSimpleToken(TokenKind(c1kind), start, modifier, ttp);
|
||||
return true;
|
||||
}
|
||||
@ -1832,16 +1832,16 @@ TokenStreamSpecific<CharT, AnyCharsAccess>::getTokenInternal(TokenKind* const tt
|
||||
// Look for an identifier.
|
||||
//
|
||||
if (c1kind == Ident) {
|
||||
TokenStart start(sourceUnits, -1);
|
||||
return identifierName(start, sourceUnits.addressOfNextCodeUnit() - 1,
|
||||
TokenStart start(this->sourceUnits, -1);
|
||||
return identifierName(start, this->sourceUnits.addressOfNextCodeUnit() - 1,
|
||||
IdentifierEscapes::None, modifier, ttp);
|
||||
}
|
||||
|
||||
// Look for a decimal number.
|
||||
//
|
||||
if (c1kind == Dec) {
|
||||
TokenStart start(sourceUnits, -1);
|
||||
const CharT* numStart = sourceUnits.addressOfNextCodeUnit() - 1;
|
||||
TokenStart start(this->sourceUnits, -1);
|
||||
const CharT* numStart = this->sourceUnits.addressOfNextCodeUnit() - 1;
|
||||
return decimalNumber(unit, start, numStart, modifier, ttp);
|
||||
}
|
||||
|
||||
@ -1854,8 +1854,8 @@ TokenStreamSpecific<CharT, AnyCharsAccess>::getTokenInternal(TokenKind* const tt
|
||||
//
|
||||
if (c1kind == EOL) {
|
||||
// If it's a \r\n sequence, consume it as a single EOL.
|
||||
if (unit == '\r' && !sourceUnits.atEnd())
|
||||
sourceUnits.matchCodeUnit('\n');
|
||||
if (unit == '\r' && !this->sourceUnits.atEnd())
|
||||
this->sourceUnits.matchCodeUnit('\n');
|
||||
|
||||
if (!updateLineInfoForEOL())
|
||||
return badToken();
|
||||
@ -1869,7 +1869,7 @@ TokenStreamSpecific<CharT, AnyCharsAccess>::getTokenInternal(TokenKind* const tt
|
||||
// decimal) number.
|
||||
//
|
||||
if (c1kind == ZeroDigit) {
|
||||
TokenStart start(sourceUnits, -1);
|
||||
TokenStart start(this->sourceUnits, -1);
|
||||
|
||||
int radix;
|
||||
const CharT* numStart;
|
||||
@ -1885,7 +1885,7 @@ TokenStreamSpecific<CharT, AnyCharsAccess>::getTokenInternal(TokenKind* const tt
|
||||
}
|
||||
|
||||
// one past the '0x'
|
||||
numStart = sourceUnits.addressOfNextCodeUnit() - 1;
|
||||
numStart = this->sourceUnits.addressOfNextCodeUnit() - 1;
|
||||
|
||||
while (JS7_ISHEX(unit))
|
||||
unit = getCodeUnit();
|
||||
@ -1900,7 +1900,7 @@ TokenStreamSpecific<CharT, AnyCharsAccess>::getTokenInternal(TokenKind* const tt
|
||||
}
|
||||
|
||||
// one past the '0b'
|
||||
numStart = sourceUnits.addressOfNextCodeUnit() - 1;
|
||||
numStart = this->sourceUnits.addressOfNextCodeUnit() - 1;
|
||||
|
||||
while (unit == '0' || unit == '1')
|
||||
unit = getCodeUnit();
|
||||
@ -1915,14 +1915,14 @@ TokenStreamSpecific<CharT, AnyCharsAccess>::getTokenInternal(TokenKind* const tt
|
||||
}
|
||||
|
||||
// one past the '0o'
|
||||
numStart = sourceUnits.addressOfNextCodeUnit() - 1;
|
||||
numStart = this->sourceUnits.addressOfNextCodeUnit() - 1;
|
||||
|
||||
while (JS7_ISOCT(unit))
|
||||
unit = getCodeUnit();
|
||||
} else if (IsAsciiDigit(unit)) {
|
||||
radix = 8;
|
||||
// one past the '0'
|
||||
numStart = sourceUnits.addressOfNextCodeUnit() - 1;
|
||||
numStart = this->sourceUnits.addressOfNextCodeUnit() - 1;
|
||||
|
||||
do {
|
||||
// Octal integer literals are not permitted in strict mode
|
||||
@ -1946,7 +1946,7 @@ TokenStreamSpecific<CharT, AnyCharsAccess>::getTokenInternal(TokenKind* const tt
|
||||
} while (IsAsciiDigit(unit));
|
||||
} else {
|
||||
// '0' not followed by [XxBbOo0-9]; scan as a decimal number.
|
||||
numStart = sourceUnits.addressOfNextCodeUnit() - 1;
|
||||
numStart = this->sourceUnits.addressOfNextCodeUnit() - 1;
|
||||
|
||||
// NOTE: |unit| may be EOF here. (This is permitted by case #3
|
||||
// in TokenStream.h docs for this function.)
|
||||
@ -1984,7 +1984,7 @@ TokenStreamSpecific<CharT, AnyCharsAccess>::getTokenInternal(TokenKind* const tt
|
||||
double dval;
|
||||
const char16_t* dummy;
|
||||
if (!GetPrefixInteger(anyCharsAccess().cx, numStart,
|
||||
sourceUnits.addressOfNextCodeUnit(), radix, &dummy, &dval))
|
||||
this->sourceUnits.addressOfNextCodeUnit(), radix, &dummy, &dval))
|
||||
{
|
||||
return badToken();
|
||||
}
|
||||
@ -2000,7 +2000,7 @@ TokenStreamSpecific<CharT, AnyCharsAccess>::getTokenInternal(TokenKind* const tt
|
||||
// creation code for all such tokens. All other tokens must be handled
|
||||
// by returning (or by continuing from the loop enclosing this).
|
||||
//
|
||||
TokenStart start(sourceUnits, -1);
|
||||
TokenStart start(this->sourceUnits, -1);
|
||||
TokenKind simpleKind;
|
||||
#ifdef DEBUG
|
||||
simpleKind = TokenKind::Limit; // sentinel value for code after switch
|
||||
@ -2009,8 +2009,8 @@ TokenStreamSpecific<CharT, AnyCharsAccess>::getTokenInternal(TokenKind* const tt
|
||||
case '.':
|
||||
unit = getCodeUnit();
|
||||
if (IsAsciiDigit(unit)) {
|
||||
return decimalNumber('.', start, sourceUnits.addressOfNextCodeUnit() - 2, modifier,
|
||||
ttp);
|
||||
return decimalNumber('.', start, this->sourceUnits.addressOfNextCodeUnit() - 2,
|
||||
modifier, ttp);
|
||||
}
|
||||
|
||||
if (unit == '.') {
|
||||
@ -2047,7 +2047,7 @@ TokenStreamSpecific<CharT, AnyCharsAccess>::getTokenInternal(TokenKind* const tt
|
||||
uint32_t codePoint;
|
||||
if (uint32_t escapeLength = matchUnicodeEscapeIdStart(&codePoint)) {
|
||||
return identifierName(start,
|
||||
sourceUnits.addressOfNextCodeUnit() - escapeLength - 1,
|
||||
this->sourceUnits.addressOfNextCodeUnit() - escapeLength - 1,
|
||||
IdentifierEscapes::SawUnicodeEscape, modifier, ttp);
|
||||
}
|
||||
|
||||
@ -2237,8 +2237,8 @@ TokenStreamSpecific<CharT, AnyCharsAccess>::getStringOrTemplateToken(char untilC
|
||||
bool parsingTemplate = (untilChar == '`');
|
||||
bool templateHead = false;
|
||||
|
||||
TokenStart start(sourceUnits, -1);
|
||||
charBuffer.clear();
|
||||
TokenStart start(this->sourceUnits, -1);
|
||||
this->charBuffer.clear();
|
||||
|
||||
// Run the bad-token code for every path out of this function except the
|
||||
// one success-case.
|
||||
@ -2324,7 +2324,7 @@ TokenStreamSpecific<CharT, AnyCharsAccess>::getStringOrTemplateToken(char untilC
|
||||
// LineContinuation represents no code points, so don't append
|
||||
// in this case.
|
||||
if (codePoint != '\n') {
|
||||
if (!charBuffer.append(unit))
|
||||
if (!this->charBuffer.append(unit))
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -2340,7 +2340,7 @@ TokenStreamSpecific<CharT, AnyCharsAccess>::getStringOrTemplateToken(char untilC
|
||||
case 'v': unit = '\v'; break;
|
||||
|
||||
case '\r':
|
||||
sourceUnits.matchCodeUnit('\n');
|
||||
this->sourceUnits.matchCodeUnit('\n');
|
||||
MOZ_FALLTHROUGH;
|
||||
case '\n': {
|
||||
// LineContinuation represents no code points. We're manually
|
||||
@ -2362,7 +2362,7 @@ TokenStreamSpecific<CharT, AnyCharsAccess>::getStringOrTemplateToken(char untilC
|
||||
|
||||
// First handle a delimited Unicode escape, e.g. \u{1F4A9}.
|
||||
if (c2 == '{') {
|
||||
uint32_t start = sourceUnits.offset() - 3;
|
||||
uint32_t start = this->sourceUnits.offset() - 3;
|
||||
uint32_t code = 0;
|
||||
bool first = true;
|
||||
bool valid = true;
|
||||
@ -2444,12 +2444,12 @@ TokenStreamSpecific<CharT, AnyCharsAccess>::getStringOrTemplateToken(char untilC
|
||||
// template literal, we must defer error reporting because
|
||||
// malformed escapes are okay in *tagged* template literals.
|
||||
char16_t v;
|
||||
if (JS7_ISHEX(c2) && sourceUnits.matchHexDigits(3, &v)) {
|
||||
if (JS7_ISHEX(c2) && this->sourceUnits.matchHexDigits(3, &v)) {
|
||||
unit = (JS7_UNHEX(c2) << 12) | v;
|
||||
} else {
|
||||
// Beware: |c2| may not be an ASCII code point here!
|
||||
ungetCodeUnit(c2);
|
||||
uint32_t start = sourceUnits.offset() - 2;
|
||||
uint32_t start = this->sourceUnits.offset() - 2;
|
||||
if (parsingTemplate) {
|
||||
TokenStreamAnyChars& anyChars = anyCharsAccess();
|
||||
anyChars.setInvalidTemplateEscape(start, InvalidEscapeType::Unicode);
|
||||
@ -2464,10 +2464,10 @@ TokenStreamSpecific<CharT, AnyCharsAccess>::getStringOrTemplateToken(char untilC
|
||||
// Hexadecimal character specification.
|
||||
case 'x': {
|
||||
char16_t v;
|
||||
if (sourceUnits.matchHexDigits(2, &v)) {
|
||||
if (this->sourceUnits.matchHexDigits(2, &v)) {
|
||||
unit = v;
|
||||
} else {
|
||||
uint32_t start = sourceUnits.offset() - 2;
|
||||
uint32_t start = this->sourceUnits.offset() - 2;
|
||||
if (parsingTemplate) {
|
||||
TokenStreamAnyChars& anyChars = anyCharsAccess();
|
||||
anyChars.setInvalidTemplateEscape(start, InvalidEscapeType::Hexadecimal);
|
||||
@ -2496,7 +2496,7 @@ TokenStreamSpecific<CharT, AnyCharsAccess>::getStringOrTemplateToken(char untilC
|
||||
if (val != 0 || IsAsciiDigit(unit)) {
|
||||
TokenStreamAnyChars& anyChars = anyCharsAccess();
|
||||
if (parsingTemplate) {
|
||||
anyChars.setInvalidTemplateEscape(sourceUnits.offset() - 2,
|
||||
anyChars.setInvalidTemplateEscape(this->sourceUnits.offset() - 2,
|
||||
InvalidEscapeType::Octal);
|
||||
continue;
|
||||
}
|
||||
@ -2530,7 +2530,7 @@ TokenStreamSpecific<CharT, AnyCharsAccess>::getStringOrTemplateToken(char untilC
|
||||
} // default
|
||||
}
|
||||
|
||||
if (!charBuffer.append(unit))
|
||||
if (!this->charBuffer.append(unit))
|
||||
return false;
|
||||
|
||||
continue;
|
||||
@ -2548,8 +2548,8 @@ TokenStreamSpecific<CharT, AnyCharsAccess>::getStringOrTemplateToken(char untilC
|
||||
unit = '\n';
|
||||
|
||||
// If it's a \r\n sequence: treat as a single EOL, skip over the \n.
|
||||
if (!sourceUnits.atEnd())
|
||||
sourceUnits.matchCodeUnit('\n');
|
||||
if (!this->sourceUnits.atEnd())
|
||||
this->sourceUnits.matchCodeUnit('\n');
|
||||
}
|
||||
|
||||
if (!updateLineInfoForEOL())
|
||||
@ -2561,7 +2561,7 @@ TokenStreamSpecific<CharT, AnyCharsAccess>::getStringOrTemplateToken(char untilC
|
||||
break;
|
||||
}
|
||||
|
||||
if (!charBuffer.append(unit))
|
||||
if (!this->charBuffer.append(unit))
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -1234,7 +1234,8 @@ TokenStreamCharsBase<CharT>::matchCodeUnit(int32_t expect)
|
||||
{
|
||||
MOZ_ASSERT(expect != EOF, "shouldn't be matching EOFs");
|
||||
MOZ_ASSERT(!SourceUnits::isRawEOLChar(expect));
|
||||
return MOZ_LIKELY(!sourceUnits.atEnd()) && sourceUnits.matchCodeUnit(toCharT(expect));
|
||||
return MOZ_LIKELY(!this->sourceUnits.atEnd()) &&
|
||||
this->sourceUnits.matchCodeUnit(toCharT(expect));
|
||||
}
|
||||
|
||||
template<>
|
||||
@ -1242,7 +1243,7 @@ MOZ_MUST_USE inline bool
|
||||
TokenStreamCharsBase<char16_t>::fillCharBufferWithTemplateStringContents(const char16_t* cur,
|
||||
const char16_t* end)
|
||||
{
|
||||
MOZ_ASSERT(charBuffer.length() == 0);
|
||||
MOZ_ASSERT(this->charBuffer.length() == 0);
|
||||
|
||||
while (cur < end) {
|
||||
// U+2028 LINE SEPARATOR and U+2029 PARAGRAPH SEPARATOR are
|
||||
@ -1256,7 +1257,7 @@ TokenStreamCharsBase<char16_t>::fillCharBufferWithTemplateStringContents(const c
|
||||
cur++;
|
||||
}
|
||||
|
||||
if (!charBuffer.append(ch))
|
||||
if (!this->charBuffer.append(ch))
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -1318,8 +1319,6 @@ class GeneralTokenStreamChars
|
||||
protected:
|
||||
using typename CharsBase::SourceUnits;
|
||||
|
||||
using CharsBase::sourceUnits;
|
||||
|
||||
protected:
|
||||
using CharsBase::CharsBase;
|
||||
|
||||
@ -1390,8 +1389,8 @@ class GeneralTokenStreamChars
|
||||
* it's ungotten.
|
||||
*/
|
||||
int32_t getCodeUnit() {
|
||||
if (MOZ_LIKELY(!sourceUnits.atEnd()))
|
||||
return sourceUnits.getCodeUnit();
|
||||
if (MOZ_LIKELY(!this->sourceUnits.atEnd()))
|
||||
return this->sourceUnits.getCodeUnit();
|
||||
|
||||
anyCharsAccess().flags.isEOF = true;
|
||||
return EOF;
|
||||
@ -1410,7 +1409,7 @@ class GeneralTokenStreamChars
|
||||
void consumeRestOfSingleLineComment();
|
||||
|
||||
MOZ_MUST_USE MOZ_ALWAYS_INLINE bool updateLineInfoForEOL() {
|
||||
return anyCharsAccess().internalUpdateLineInfoForEOL(sourceUnits.offset());
|
||||
return anyCharsAccess().internalUpdateLineInfoForEOL(this->sourceUnits.offset());
|
||||
}
|
||||
|
||||
uint32_t matchUnicodeEscapeIdStart(uint32_t* codePoint);
|
||||
@ -1436,7 +1435,7 @@ class TokenStreamChars<char16_t, AnyCharsAccess>
|
||||
using GeneralCharsBase::anyCharsAccess;
|
||||
using GeneralCharsBase::getCodeUnit;
|
||||
using TokenStreamCharsShared::isAsciiCodePoint;
|
||||
using CharsBase::sourceUnits;
|
||||
// Deliberately don't |using| |sourceUnits| because of bug 1472569. :-(
|
||||
using GeneralCharsBase::ungetCodeUnit;
|
||||
using GeneralCharsBase::updateLineInfoForEOL;
|
||||
|
||||
@ -1464,12 +1463,14 @@ class TokenStreamChars<char16_t, AnyCharsAccess>
|
||||
MOZ_MUST_USE bool getFullAsciiCodePoint(int32_t lead, int32_t* codePoint) {
|
||||
MOZ_ASSERT(isAsciiCodePoint(lead),
|
||||
"non-ASCII code units must be handled separately");
|
||||
MOZ_ASSERT(lead == sourceUnits.previousCodeUnit(),
|
||||
// NOTE: |this->|-qualify to avoid a gcc bug: see bug 1472569.
|
||||
MOZ_ASSERT(lead == this->sourceUnits.previousCodeUnit(),
|
||||
"getFullAsciiCodePoint called incorrectly");
|
||||
|
||||
if (MOZ_UNLIKELY(lead == '\r')) {
|
||||
if (MOZ_LIKELY(!sourceUnits.atEnd()))
|
||||
sourceUnits.matchCodeUnit('\n');
|
||||
// NOTE: |this->|-qualify to avoid a gcc bug: see bug 1472569.
|
||||
if (MOZ_LIKELY(!this->sourceUnits.atEnd()))
|
||||
this->sourceUnits.matchCodeUnit('\n');
|
||||
} else if (MOZ_LIKELY(lead != '\n')) {
|
||||
*codePoint = lead;
|
||||
return true;
|
||||
@ -1611,7 +1612,7 @@ class MOZ_STACK_CLASS TokenStreamSpecific
|
||||
using TokenStreamCharsShared::appendCodePointToCharBuffer;
|
||||
using CharsBase::atomizeSourceChars;
|
||||
using GeneralCharsBase::badToken;
|
||||
using TokenStreamCharsShared::charBuffer;
|
||||
// Deliberately don't |using| |charBuffer| because of bug 1472569. :-(
|
||||
using CharsBase::consumeKnownCodeUnit;
|
||||
using GeneralCharsBase::consumeRestOfSingleLineComment;
|
||||
using TokenStreamCharsShared::copyCharBufferTo;
|
||||
@ -1631,7 +1632,7 @@ class MOZ_STACK_CLASS TokenStreamSpecific
|
||||
using GeneralCharsBase::newRegExpToken;
|
||||
using GeneralCharsBase::newSimpleToken;
|
||||
using CharsBase::peekCodeUnit;
|
||||
using CharsBase::sourceUnits;
|
||||
// Deliberately don't |using| |sourceUnits| because of bug 1472569. :-(
|
||||
using SpecializedCharsBase::ungetCodePointIgnoreEOL;
|
||||
using GeneralCharsBase::ungetCodeUnit;
|
||||
using SpecializedCharsBase::ungetNonAsciiNormalizedCodePoint;
|
||||
@ -1727,14 +1728,14 @@ class MOZ_STACK_CLASS TokenStreamSpecific
|
||||
|
||||
MOZ_ASSERT(anyChars.currentToken().type == TokenKind::TemplateHead ||
|
||||
anyChars.currentToken().type == TokenKind::NoSubsTemplate);
|
||||
const CharT* cur = sourceUnits.codeUnitPtrAt(anyChars.currentToken().pos.begin + 1);
|
||||
const CharT* cur = this->sourceUnits.codeUnitPtrAt(anyChars.currentToken().pos.begin + 1);
|
||||
const CharT* end;
|
||||
if (anyChars.currentToken().type == TokenKind::TemplateHead) {
|
||||
// Of the form |`...${| or |}...${|
|
||||
end = sourceUnits.codeUnitPtrAt(anyChars.currentToken().pos.end - 2);
|
||||
end = this->sourceUnits.codeUnitPtrAt(anyChars.currentToken().pos.end - 2);
|
||||
} else {
|
||||
// NO_SUBS_TEMPLATE is of the form |`...`| or |}...`|
|
||||
end = sourceUnits.codeUnitPtrAt(anyChars.currentToken().pos.end - 1);
|
||||
end = this->sourceUnits.codeUnitPtrAt(anyChars.currentToken().pos.end - 1);
|
||||
}
|
||||
|
||||
if (!fillCharBufferWithTemplateStringContents(cur, end))
|
||||
@ -1966,11 +1967,11 @@ class MOZ_STACK_CLASS TokenStreamSpecific
|
||||
MOZ_MUST_USE bool seek(const Position& pos, const TokenStreamAnyChars& other);
|
||||
|
||||
const CharT* codeUnitPtrAt(size_t offset) const {
|
||||
return sourceUnits.codeUnitPtrAt(offset);
|
||||
return this->sourceUnits.codeUnitPtrAt(offset);
|
||||
}
|
||||
|
||||
const CharT* rawLimit() const {
|
||||
return sourceUnits.limit();
|
||||
return this->sourceUnits.limit();
|
||||
}
|
||||
|
||||
MOZ_MUST_USE bool identifierName(TokenStart start, const CharT* identStart,
|
||||
|
Loading…
Reference in New Issue
Block a user