mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Replace push_back with emplace_back where it makes sense
This commit is contained in:
parent
871ea22bb9
commit
2f6dc2e773
@ -36,7 +36,7 @@ string IndentedWriter::format() const
|
||||
void IndentedWriter::newLine()
|
||||
{
|
||||
if (!m_lines.back().contents.empty())
|
||||
m_lines.push_back({ string(), m_lines.back().indentation });
|
||||
m_lines.emplace_back(Line{string(), m_lines.back().indentation});
|
||||
}
|
||||
|
||||
void IndentedWriter::indent()
|
||||
|
@ -91,7 +91,7 @@ string dev::quotedAlternativesList(vector<string> const& suggestions)
|
||||
vector<string> quotedSuggestions;
|
||||
|
||||
for (auto& suggestion: suggestions)
|
||||
quotedSuggestions.push_back("\"" + suggestion + "\"");
|
||||
quotedSuggestions.emplace_back("\"" + suggestion + "\"");
|
||||
|
||||
return joinHumanReadable(quotedSuggestions, ", ", " or ");
|
||||
}
|
||||
|
@ -83,7 +83,7 @@ AssemblyItem const& Assembly::append(AssemblyItem const& _i)
|
||||
{
|
||||
assertThrow(m_deposit >= 0, AssemblyException, "Stack underflow.");
|
||||
m_deposit += _i.deposit();
|
||||
m_items.push_back(_i);
|
||||
m_items.emplace_back(_i);
|
||||
if (m_items.back().location().isEmpty() && !m_currentSourceLocation.isEmpty())
|
||||
m_items.back().setLocation(m_currentSourceLocation);
|
||||
return back();
|
||||
|
@ -87,7 +87,7 @@ void ControlFlowGraph::splitBlocks()
|
||||
m_blocks[id].begin = index;
|
||||
}
|
||||
if (item.type() == PushTag)
|
||||
m_blocks[id].pushedTags.push_back(BlockId(item.data()));
|
||||
m_blocks[id].pushedTags.emplace_back(item.data());
|
||||
if (SemanticInformation::altersControlFlow(item))
|
||||
{
|
||||
m_blocks[id].end = index + 1;
|
||||
|
@ -209,7 +209,7 @@ ExpressionTemplate::ExpressionTemplate(Pattern const& _pattern, SourceLocation c
|
||||
item = _pattern.toAssemblyItem(_location);
|
||||
}
|
||||
for (auto const& arg: _pattern.arguments())
|
||||
arguments.push_back(ExpressionTemplate(arg, _location));
|
||||
arguments.emplace_back(arg, _location);
|
||||
}
|
||||
|
||||
string ExpressionTemplate::toString() const
|
||||
|
@ -105,7 +105,7 @@ class SecondarySourceLocation
|
||||
public:
|
||||
SecondarySourceLocation& append(std::string const& _errMsg, SourceLocation const& _sourceLocation)
|
||||
{
|
||||
infos.push_back(std::make_pair(_errMsg, _sourceLocation));
|
||||
infos.emplace_back(_errMsg, _sourceLocation);
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
@ -353,7 +353,7 @@ void CodeFragment::constructOperation(sp::utree const& _t, CompilerState& _s)
|
||||
if (j.tag() || j.which() != sp::utree_type::symbol_type)
|
||||
error<InvalidMacroArgs>();
|
||||
auto sr = j.get<sp::basic_string<boost::iterator_range<char const*>, sp::utree_type::symbol_type>>();
|
||||
args.push_back(string(sr.begin(), sr.end()));
|
||||
args.emplace_back(sr.begin(), sr.end());
|
||||
}
|
||||
else if (ii == 3)
|
||||
{
|
||||
@ -464,9 +464,9 @@ void CodeFragment::constructOperation(sp::utree const& _t, CompilerState& _s)
|
||||
if (c++)
|
||||
{
|
||||
if (us == "LLL" && c == 1)
|
||||
code.push_back(CodeFragment(i, ns, m_readFile));
|
||||
code.emplace_back(i, ns, m_readFile);
|
||||
else
|
||||
code.push_back(CodeFragment(i, _s, m_readFile));
|
||||
code.emplace_back(i, _s, m_readFile);
|
||||
}
|
||||
auto requireSize = [&](unsigned s) { if (code.size() != s) error<IncorrectParameterCount>(us); };
|
||||
auto requireMinSize = [&](unsigned s) { if (code.size() < s) error<IncorrectParameterCount>(us); };
|
||||
|
@ -46,22 +46,22 @@ bytes dev::lll::compileLLL(string const& _src, dev::solidity::EVMVersion _evmVer
|
||||
{
|
||||
if (_errors)
|
||||
{
|
||||
_errors->push_back("Parse error.");
|
||||
_errors->push_back(boost::diagnostic_information(_e));
|
||||
_errors->emplace_back("Parse error.");
|
||||
_errors->emplace_back(boost::diagnostic_information(_e));
|
||||
}
|
||||
}
|
||||
catch (std::exception const& _e)
|
||||
{
|
||||
if (_errors)
|
||||
{
|
||||
_errors->push_back("Parse exception.");
|
||||
_errors->push_back(boost::diagnostic_information(_e));
|
||||
_errors->emplace_back("Parse exception.");
|
||||
_errors->emplace_back(boost::diagnostic_information(_e));
|
||||
}
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
if (_errors)
|
||||
_errors->push_back("Internal compiler exception.");
|
||||
_errors->emplace_back("Internal compiler exception.");
|
||||
}
|
||||
return bytes();
|
||||
}
|
||||
@ -84,22 +84,22 @@ std::string dev::lll::compileLLLToAsm(std::string const& _src, EVMVersion _evmVe
|
||||
{
|
||||
if (_errors)
|
||||
{
|
||||
_errors->push_back("Parse error.");
|
||||
_errors->push_back(boost::diagnostic_information(_e));
|
||||
_errors->emplace_back("Parse error.");
|
||||
_errors->emplace_back(boost::diagnostic_information(_e));
|
||||
}
|
||||
}
|
||||
catch (std::exception const& _e)
|
||||
{
|
||||
if (_errors)
|
||||
{
|
||||
_errors->push_back("Parse exception.");
|
||||
_errors->push_back(boost::diagnostic_information(_e));
|
||||
_errors->emplace_back("Parse exception.");
|
||||
_errors->emplace_back(boost::diagnostic_information(_e));
|
||||
}
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
if (_errors)
|
||||
_errors->push_back("Internal compiler exception.");
|
||||
_errors->emplace_back("Internal compiler exception.");
|
||||
}
|
||||
return string();
|
||||
}
|
||||
|
@ -227,7 +227,7 @@ void ContractLevelChecker::checkAbstractFunctions(ContractDefinition const& _con
|
||||
return _type->hasEqualParameterTypes(*_funAndFlag.first);
|
||||
});
|
||||
if (it == overloads.end())
|
||||
overloads.push_back(make_pair(_type, _implemented));
|
||||
overloads.emplace_back(_type, _implemented);
|
||||
else if (it->second)
|
||||
{
|
||||
if (!_implemented)
|
||||
@ -409,8 +409,8 @@ void ContractLevelChecker::checkExternalTypeClashes(ContractDefinition const& _c
|
||||
auto functionType = make_shared<FunctionType>(*f);
|
||||
// under non error circumstances this should be true
|
||||
if (functionType->interfaceFunctionType())
|
||||
externalDeclarations[functionType->externalSignature()].push_back(
|
||||
make_pair(f, functionType->asCallableFunction(false))
|
||||
externalDeclarations[functionType->externalSignature()].emplace_back(
|
||||
f, functionType->asCallableFunction(false)
|
||||
);
|
||||
}
|
||||
for (VariableDeclaration const* v: contract->stateVariables())
|
||||
@ -419,8 +419,8 @@ void ContractLevelChecker::checkExternalTypeClashes(ContractDefinition const& _c
|
||||
auto functionType = make_shared<FunctionType>(*v);
|
||||
// under non error circumstances this should be true
|
||||
if (functionType->interfaceFunctionType())
|
||||
externalDeclarations[functionType->externalSignature()].push_back(
|
||||
make_pair(v, functionType->asCallableFunction(false))
|
||||
externalDeclarations[functionType->externalSignature()].emplace_back(
|
||||
v, functionType->asCallableFunction(false)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -198,7 +198,7 @@ vector<pair<FixedHash<4>, FunctionTypePointer>> const& ContractDefinition::inter
|
||||
{
|
||||
signaturesSeen.insert(functionSignature);
|
||||
FixedHash<4> hash(dev::keccak256(functionSignature));
|
||||
m_interfaceFunctionList->push_back(make_pair(hash, fun));
|
||||
m_interfaceFunctionList->emplace_back(hash, fun);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -234,7 +234,7 @@ bool ASTJsonConverter::visit(ImportDirective const& _node)
|
||||
make_pair(m_legacy ? "SourceUnit" : "sourceUnit", nodeId(*_node.annotation().sourceUnit)),
|
||||
make_pair("scope", idOrNull(_node.scope()))
|
||||
};
|
||||
attributes.push_back(make_pair("unitAlias", _node.name()));
|
||||
attributes.emplace_back("unitAlias", _node.name());
|
||||
Json::Value symbolAliases(Json::arrayValue);
|
||||
for (auto const& symbolAlias: _node.symbolAliases())
|
||||
{
|
||||
@ -244,7 +244,7 @@ bool ASTJsonConverter::visit(ImportDirective const& _node)
|
||||
tuple["local"] = symbolAlias.second ? Json::Value(*symbolAlias.second) : Json::nullValue;
|
||||
symbolAliases.append(tuple);
|
||||
}
|
||||
attributes.push_back(make_pair("symbolAliases", std::move(symbolAliases)));
|
||||
attributes.emplace_back("symbolAliases", std::move(symbolAliases));
|
||||
setJsonNode(_node, "ImportDirective", std::move(attributes));
|
||||
return false;
|
||||
}
|
||||
@ -357,7 +357,7 @@ bool ASTJsonConverter::visit(VariableDeclaration const& _node)
|
||||
make_pair("typeDescriptions", typePointerToJson(_node.annotation().type, true))
|
||||
};
|
||||
if (m_inEvent)
|
||||
attributes.push_back(make_pair("indexed", _node.isIndexed()));
|
||||
attributes.emplace_back("indexed", _node.isIndexed());
|
||||
setJsonNode(_node, "VariableDeclaration", std::move(attributes));
|
||||
return false;
|
||||
}
|
||||
@ -647,11 +647,11 @@ bool ASTJsonConverter::visit(FunctionCall const& _node)
|
||||
};
|
||||
if (m_legacy)
|
||||
{
|
||||
attributes.push_back(make_pair("isStructConstructorCall", _node.annotation().kind == FunctionCallKind::StructConstructorCall));
|
||||
attributes.push_back(make_pair("type_conversion", _node.annotation().kind == FunctionCallKind::TypeConversion));
|
||||
attributes.emplace_back("isStructConstructorCall", _node.annotation().kind == FunctionCallKind::StructConstructorCall);
|
||||
attributes.emplace_back("type_conversion", _node.annotation().kind == FunctionCallKind::TypeConversion);
|
||||
}
|
||||
else
|
||||
attributes.push_back(make_pair("kind", functionCallKind(_node.annotation().kind)));
|
||||
attributes.emplace_back("kind", functionCallKind(_node.annotation().kind));
|
||||
appendExpressionAttributes(attributes, _node.annotation());
|
||||
setJsonNode(_node, "FunctionCall", std::move(attributes));
|
||||
return false;
|
||||
|
@ -446,7 +446,7 @@ MemberList::MemberMap Type::boundFunctions(Type const& _type, ContractDefinition
|
||||
continue;
|
||||
FunctionTypePointer fun = FunctionType(*function, false).asCallableFunction(true, true);
|
||||
if (_type.isImplicitlyConvertibleTo(*fun->selfType()))
|
||||
members.push_back(MemberList::Member(function->name(), fun, function));
|
||||
members.emplace_back(function->name(), fun, function);
|
||||
}
|
||||
}
|
||||
return members;
|
||||
@ -1811,23 +1811,23 @@ MemberList::MemberMap ArrayType::nativeMembers(ContractDefinition const*) const
|
||||
MemberList::MemberMap members;
|
||||
if (!isString())
|
||||
{
|
||||
members.push_back({"length", make_shared<IntegerType>(256)});
|
||||
members.emplace_back("length", make_shared<IntegerType>(256));
|
||||
if (isDynamicallySized() && location() == DataLocation::Storage)
|
||||
{
|
||||
members.push_back({"push", make_shared<FunctionType>(
|
||||
members.emplace_back("push", make_shared<FunctionType>(
|
||||
TypePointers{baseType()},
|
||||
TypePointers{make_shared<IntegerType>(256)},
|
||||
strings{string()},
|
||||
strings{string()},
|
||||
isByteArray() ? FunctionType::Kind::ByteArrayPush : FunctionType::Kind::ArrayPush
|
||||
)});
|
||||
members.push_back({"pop", make_shared<FunctionType>(
|
||||
));
|
||||
members.emplace_back("pop", make_shared<FunctionType>(
|
||||
TypePointers{},
|
||||
TypePointers{},
|
||||
strings{string()},
|
||||
strings{string()},
|
||||
FunctionType::Kind::ArrayPop
|
||||
)});
|
||||
));
|
||||
}
|
||||
}
|
||||
return members;
|
||||
@ -1956,21 +1956,17 @@ MemberList::MemberMap ContractType::nativeMembers(ContractDefinition const* _con
|
||||
break;
|
||||
}
|
||||
if (!functionWithEqualArgumentsFound)
|
||||
members.push_back(MemberList::Member(
|
||||
function->name(),
|
||||
functionType,
|
||||
function
|
||||
));
|
||||
members.emplace_back(function->name(), functionType, function);
|
||||
}
|
||||
}
|
||||
else if (!m_contract.isLibrary())
|
||||
{
|
||||
for (auto const& it: m_contract.interfaceFunctions())
|
||||
members.push_back(MemberList::Member(
|
||||
members.emplace_back(
|
||||
it.second->declaration().name(),
|
||||
it.second->asCallableFunction(m_contract.isLibrary()),
|
||||
&it.second->declaration()
|
||||
));
|
||||
);
|
||||
}
|
||||
return members;
|
||||
}
|
||||
@ -1998,7 +1994,7 @@ vector<tuple<VariableDeclaration const*, u256, unsigned>> ContractType::stateVar
|
||||
vector<tuple<VariableDeclaration const*, u256, unsigned>> variablesAndOffsets;
|
||||
for (size_t index = 0; index < variables.size(); ++index)
|
||||
if (auto const* offset = offsets.offset(index))
|
||||
variablesAndOffsets.push_back(make_tuple(variables[index], offset->first, offset->second));
|
||||
variablesAndOffsets.emplace_back(variables[index], offset->first, offset->second);
|
||||
return variablesAndOffsets;
|
||||
}
|
||||
|
||||
@ -2088,10 +2084,10 @@ MemberList::MemberMap StructType::nativeMembers(ContractDefinition const*) const
|
||||
// Skip all mapping members if we are not in storage.
|
||||
if (location() != DataLocation::Storage && !type->canLiveOutsideStorage())
|
||||
continue;
|
||||
members.push_back(MemberList::Member(
|
||||
members.emplace_back(
|
||||
variable->name(),
|
||||
copyForLocationIfReference(type),
|
||||
variable.get())
|
||||
variable.get()
|
||||
);
|
||||
}
|
||||
return members;
|
||||
@ -2428,7 +2424,7 @@ FunctionType::FunctionType(VariableDeclaration const& _varDecl):
|
||||
if (auto mappingType = dynamic_cast<MappingType const*>(returnType.get()))
|
||||
{
|
||||
m_parameterTypes.push_back(mappingType->keyType());
|
||||
m_parameterNames.push_back("");
|
||||
m_parameterNames.emplace_back("");
|
||||
returnType = mappingType->valueType();
|
||||
}
|
||||
else if (auto arrayType = dynamic_cast<ArrayType const*>(returnType.get()))
|
||||
@ -2437,7 +2433,7 @@ FunctionType::FunctionType(VariableDeclaration const& _varDecl):
|
||||
// Return byte arrays as whole.
|
||||
break;
|
||||
returnType = arrayType->baseType();
|
||||
m_parameterNames.push_back("");
|
||||
m_parameterNames.emplace_back("");
|
||||
m_parameterTypes.push_back(make_shared<IntegerType>(256));
|
||||
}
|
||||
else
|
||||
@ -2468,7 +2464,7 @@ FunctionType::FunctionType(VariableDeclaration const& _varDecl):
|
||||
DataLocation::Memory,
|
||||
returnType
|
||||
));
|
||||
m_returnParameterNames.push_back("");
|
||||
m_returnParameterNames.emplace_back("");
|
||||
}
|
||||
}
|
||||
|
||||
@ -2837,14 +2833,11 @@ MemberList::MemberMap FunctionType::nativeMembers(ContractDefinition const*) con
|
||||
{
|
||||
MemberList::MemberMap members;
|
||||
if (m_kind == Kind::External)
|
||||
members.push_back(MemberList::Member(
|
||||
"selector",
|
||||
make_shared<FixedBytesType>(4)
|
||||
));
|
||||
members.emplace_back("selector", make_shared<FixedBytesType>(4));
|
||||
if (m_kind != Kind::BareDelegateCall)
|
||||
{
|
||||
if (isPayable())
|
||||
members.push_back(MemberList::Member(
|
||||
members.emplace_back(
|
||||
"value",
|
||||
make_shared<FunctionType>(
|
||||
parseElementaryTypeVector({"uint"}),
|
||||
@ -2858,10 +2851,10 @@ MemberList::MemberMap FunctionType::nativeMembers(ContractDefinition const*) con
|
||||
m_gasSet,
|
||||
m_valueSet
|
||||
)
|
||||
));
|
||||
);
|
||||
}
|
||||
if (m_kind != Kind::Creation)
|
||||
members.push_back(MemberList::Member(
|
||||
members.emplace_back(
|
||||
"gas",
|
||||
make_shared<FunctionType>(
|
||||
parseElementaryTypeVector({"uint"}),
|
||||
@ -2875,7 +2868,7 @@ MemberList::MemberMap FunctionType::nativeMembers(ContractDefinition const*) con
|
||||
m_gasSet,
|
||||
m_valueSet
|
||||
)
|
||||
));
|
||||
);
|
||||
return members;
|
||||
}
|
||||
default:
|
||||
@ -3203,24 +3196,24 @@ MemberList::MemberMap TypeType::nativeMembers(ContractDefinition const* _current
|
||||
if (contract.isLibrary())
|
||||
for (FunctionDefinition const* function: contract.definedFunctions())
|
||||
if (function->isVisibleAsLibraryMember())
|
||||
members.push_back(MemberList::Member(
|
||||
members.emplace_back(
|
||||
function->name(),
|
||||
FunctionType(*function).asCallableFunction(true),
|
||||
function
|
||||
));
|
||||
);
|
||||
if (isBase)
|
||||
{
|
||||
// We are accessing the type of a base contract, so add all public and protected
|
||||
// members. Note that this does not add inherited functions on purpose.
|
||||
for (Declaration const* decl: contract.inheritableMembers())
|
||||
members.push_back(MemberList::Member(decl->name(), decl->type(), decl));
|
||||
members.emplace_back(decl->name(), decl->type(), decl);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (auto const& stru: contract.definedStructs())
|
||||
members.push_back(MemberList::Member(stru->name(), stru->type(), stru));
|
||||
members.emplace_back(stru->name(), stru->type(), stru);
|
||||
for (auto const& enu: contract.definedEnums())
|
||||
members.push_back(MemberList::Member(enu->name(), enu->type(), enu));
|
||||
members.emplace_back(enu->name(), enu->type(), enu);
|
||||
}
|
||||
}
|
||||
else if (m_actualType->category() == Category::Enum)
|
||||
@ -3228,7 +3221,7 @@ MemberList::MemberMap TypeType::nativeMembers(ContractDefinition const* _current
|
||||
EnumDefinition const& enumDef = dynamic_cast<EnumType const&>(*m_actualType).enumDefinition();
|
||||
auto enumType = make_shared<EnumType>(enumDef);
|
||||
for (ASTPointer<EnumValue> const& enumValue: enumDef.members())
|
||||
members.push_back(MemberList::Member(enumValue->name(), enumType));
|
||||
members.emplace_back(enumValue->name(), enumType);
|
||||
}
|
||||
return members;
|
||||
}
|
||||
@ -3293,7 +3286,7 @@ MemberList::MemberMap ModuleType::nativeMembers(ContractDefinition const*) const
|
||||
MemberList::MemberMap symbols;
|
||||
for (auto const& symbolName: m_sourceUnit.annotation().exportedSymbols)
|
||||
for (Declaration const* symbol: symbolName.second)
|
||||
symbols.push_back(MemberList::Member(symbolName.first, symbol->type(), symbol));
|
||||
symbols.emplace_back(symbolName.first, symbol->type(), symbol);
|
||||
return symbols;
|
||||
}
|
||||
|
||||
|
@ -141,8 +141,8 @@ string ABIFunctions::tupleDecoder(TypePointers const& _types, bool _fromMemory)
|
||||
vector<string> valueNamesLocal;
|
||||
for (size_t j = 0; j < sizeOnStack; j++)
|
||||
{
|
||||
valueNamesLocal.push_back("value" + to_string(stackPos));
|
||||
valueReturnParams.push_back("value" + to_string(stackPos));
|
||||
valueNamesLocal.emplace_back("value" + to_string(stackPos));
|
||||
valueReturnParams.emplace_back("value" + to_string(stackPos));
|
||||
stackPos++;
|
||||
}
|
||||
bool dynamic = decodingTypes[i]->isDynamicallyEncoded();
|
||||
|
@ -721,14 +721,14 @@ bool ContractCompiler::visit(WhileStatement const& _whileStatement)
|
||||
|
||||
eth::AssemblyItem loopStart = m_context.newTag();
|
||||
eth::AssemblyItem loopEnd = m_context.newTag();
|
||||
m_breakTags.push_back({loopEnd, m_context.stackHeight()});
|
||||
m_breakTags.emplace_back(loopEnd, m_context.stackHeight());
|
||||
|
||||
m_context << loopStart;
|
||||
|
||||
if (_whileStatement.isDoWhile())
|
||||
{
|
||||
eth::AssemblyItem condition = m_context.newTag();
|
||||
m_continueTags.push_back({condition, m_context.stackHeight()});
|
||||
m_continueTags.emplace_back(condition, m_context.stackHeight());
|
||||
|
||||
_whileStatement.body().accept(*this);
|
||||
|
||||
@ -739,7 +739,7 @@ bool ContractCompiler::visit(WhileStatement const& _whileStatement)
|
||||
}
|
||||
else
|
||||
{
|
||||
m_continueTags.push_back({loopStart, m_context.stackHeight()});
|
||||
m_continueTags.emplace_back(loopStart, m_context.stackHeight());
|
||||
compileExpression(_whileStatement.condition());
|
||||
m_context << Instruction::ISZERO;
|
||||
m_context.appendConditionalJumpTo(loopEnd);
|
||||
@ -770,8 +770,8 @@ bool ContractCompiler::visit(ForStatement const& _forStatement)
|
||||
if (_forStatement.initializationExpression())
|
||||
_forStatement.initializationExpression()->accept(*this);
|
||||
|
||||
m_breakTags.push_back({loopEnd, m_context.stackHeight()});
|
||||
m_continueTags.push_back({loopNext, m_context.stackHeight()});
|
||||
m_breakTags.emplace_back(loopEnd, m_context.stackHeight());
|
||||
m_continueTags.emplace_back(loopNext, m_context.stackHeight());
|
||||
m_context << loopStart;
|
||||
|
||||
// if there is no terminating condition in for, default is to always be true
|
||||
@ -997,7 +997,7 @@ void ContractCompiler::appendModifierOrFunctionCode()
|
||||
|
||||
if (codeBlock)
|
||||
{
|
||||
m_returnTags.push_back({m_context.newTag(), m_context.stackHeight()});
|
||||
m_returnTags.emplace_back(m_context.newTag(), m_context.stackHeight());
|
||||
codeBlock->accept(*this);
|
||||
|
||||
solAssert(!m_returnTags.empty(), "");
|
||||
|
@ -170,7 +170,7 @@ ASTPointer<ImportDirective> Parser::parseImportDirective()
|
||||
expectToken(Token::As);
|
||||
alias = expectIdentifierToken();
|
||||
}
|
||||
symbolAliases.push_back(make_pair(move(id), move(alias)));
|
||||
symbolAliases.emplace_back(move(id), move(alias));
|
||||
if (m_scanner->currentToken() != Token::Comma)
|
||||
break;
|
||||
m_scanner->next();
|
||||
@ -1690,7 +1690,7 @@ Parser::IndexAccessedPath Parser::parseIndexAccessedPath()
|
||||
index = parseExpression();
|
||||
SourceLocation indexLocation = iap.path.front()->location();
|
||||
indexLocation.end = endPosition();
|
||||
iap.indices.push_back(make_pair(index, indexLocation));
|
||||
iap.indices.emplace_back(index, indexLocation);
|
||||
expectToken(Token::RBrack);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user