| 272 | } |
| 273 | |
| 274 | AssignmentNode* AssignmentNode::dsqlPass(DsqlCompilerScratch* dsqlScratch) |
| 275 | { |
| 276 | AssignmentNode* node = FB_NEW_POOL(dsqlScratch->getPool()) AssignmentNode(dsqlScratch->getPool()); |
| 277 | node->asgnFrom = doDsqlPass(dsqlScratch, asgnFrom); |
| 278 | node->asgnTo = doDsqlPass(dsqlScratch, asgnTo); |
| 279 | |
| 280 | dsqlValidateTarget(node->asgnTo); |
| 281 | |
| 282 | // Try to force asgnFrom to be same type as asgnTo eg: ? = FIELD case |
| 283 | PASS1_set_parameter_type(dsqlScratch, node->asgnFrom, node->asgnTo, false); |
| 284 | |
| 285 | // Try to force asgnTo to be same type as asgnFrom eg: FIELD = ? case |
| 286 | // Try even when the above call succeeded, because "asgnTo" may |
| 287 | // have sub-expressions that should be resolved. |
| 288 | PASS1_set_parameter_type(dsqlScratch, node->asgnTo, node->asgnFrom, false); |
| 289 | |
| 290 | return node; |
| 291 | } |
| 292 | |
| 293 | string AssignmentNode::internalPrint(NodePrinter& printer) const |
| 294 | { |
no test coverage detected