Added mem::safe_recursive_clone, and while it works for regex, it's actually slower then remaking it. Hmmmm, maybe because some of the stdlib is inefficent
This commit is contained in:
@@ -692,21 +692,23 @@ NodeTree<ASTData>* ASTTransformation::transform(NodeTree<Symbol>* from, NodeTree
|
||||
return newNode;
|
||||
}
|
||||
|
||||
auto boolExp = getNode("boolean_expression", children);
|
||||
NodeTree<ASTData>* toAssign = boolExp ? transform(boolExp, scope, types, limitToFunction, templateTypeReplacements) : nullptr;
|
||||
// for type inferencing
|
||||
if (!identifierType) {
|
||||
if (toAssign)
|
||||
identifierType = toAssign->getDataRef()->valueType;
|
||||
else
|
||||
throw "have to inference but no expression";
|
||||
}
|
||||
|
||||
NodeTree<ASTData>* newIdentifier = new NodeTree<ASTData>("identifier", ASTData(identifier, Symbol(newIdentifierStr, true), identifierType));
|
||||
addToScope(newIdentifierStr, newIdentifier, scope);
|
||||
addToScope("~enclosing_scope", scope, newNode);
|
||||
addToScope("~enclosing_scope", newNode, newIdentifier);
|
||||
|
||||
auto boolExp = getNode("boolean_expression", children);
|
||||
NodeTree<ASTData>* toAssign = boolExp ? transform(boolExp, scope, types, limitToFunction, templateTypeReplacements) : nullptr;
|
||||
// for type inferencing
|
||||
if (!identifierType) {
|
||||
if (toAssign) {
|
||||
identifierType = toAssign->getDataRef()->valueType;
|
||||
newIdentifier->getDataRef()->valueType = identifierType;
|
||||
} else
|
||||
throw "have to inference but no expression";
|
||||
}
|
||||
|
||||
|
||||
newNode->addChild(newIdentifier);
|
||||
if (toAssign)
|
||||
newNode->addChild(toAssign);
|
||||
@@ -791,7 +793,7 @@ NodeTree<ASTData>* ASTTransformation::transform(NodeTree<Symbol>* from, NodeTree
|
||||
throw "Ambigious parse!";
|
||||
} else {
|
||||
// Should get rid of this eventually. Right now it handles cases like sign, alpha, a comma, etc
|
||||
std::cout << "Unhandled syntax node: " << name << std::endl;
|
||||
//std::cout << "Unhandled syntax node: " << name << std::endl;
|
||||
return new NodeTree<ASTData>();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user