Changeset 2626
- Timestamp:
- 11/14/11 02:17:21 (6 months ago)
- Location:
- cobra/trunk
- Files:
-
- 5 modified
-
Source/Expr.cobra (modified) (1 diff)
-
Source/Node.cobra (modified) (1 diff)
-
Source/Statements.cobra (modified) (27 diffs)
-
Source/Utils.cobra (modified) (1 diff)
-
Tests/150-mixins/100-mixin-basics.cobra (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
cobra/trunk/Source/Expr.cobra
r2607 r2626 629 629 630 630 get memberDefinition from _definition 631 632 def _innerClone 633 assert _definition is nil 634 base._innerClone 635 # to-do: _genericArgProxies 636 _args = _args.toList 637 for i in _args.count, _args[i] = _args[i].clone 631 638 632 639 def _bindImp is override -
cobra/trunk/Source/Node.cobra
r2579 r2626 944 944 945 945 946 ## Misc 947 946 ## Cloning 947 948 def clone as dynamic 949 require not .didBindImp # for now, not expecting a clone after binding implementation 950 ensure result is not nil 951 clone = .memberwiseClone to Stmt 952 clone._innerClone 953 return clone 954 955 def _innerClone 956 pass 957 948 958 def memberwiseClone as Object is protected 949 959 node = base.memberwiseClone to Node -
cobra/trunk/Source/Statements.cobra
r2625 r2626 28 28 pass 29 29 30 def clone as Stmt31 clone = .memberwiseClone to Stmt32 clone._innerClone33 return clone34 35 def _innerClone36 pass37 38 30 def noAssignmentAllowed(expr as Expr) 39 31 """ … … 156 148 get info from var 157 149 150 def _innerClone 151 base._innerClone 152 _expr = _expr.clone 153 if _info, _info = _info.clone 154 158 155 def _bindImp 159 156 base._bindImp … … 190 187 191 188 get expr from var 189 190 def _innerClone 191 base._innerClone 192 _expr = _expr.clone 192 193 193 194 def _bindImp … … 232 233 get elsePart from var as BlockStmt? 233 234 235 def _innerClone 236 base._innerClone 237 _expr = _expr.clone 238 _onParts = _onParts.toList 239 for i in .onParts.count, .onParts[i] = .onParts[i].clone 240 _elsePart = _elsePart.clone 241 234 242 def _bindImp 235 243 base._bindImp … … 265 273 has Subnodes 266 274 275 def _innerClone 276 base._innerClone 277 _exprs = _exprs.toList 278 for i in _exprs.count, _exprs[i] = _exprs[i].clone 279 _block = _block.clone 280 267 281 def _bindImp 268 282 base._bindImp … … 309 323 else 310 324 return base.replaceChild(find, replace) 325 326 def _innerClone 327 base._innerClone 328 _stmts = _stmts.toList 329 for i in _stmts.count, _stmts[i] = _stmts[i].clone 330 # not expecting a clone after binding imp: 331 assert _ifInheritsVar is nil 332 assert _ifInheritsType is nil 311 333 312 334 def _bindImp … … 362 384 .addField('block', _block) 363 385 386 def _innerClone 387 base._innerClone 388 _block = _block.clone 389 364 390 def _bindImp 365 391 base._bindImp … … 399 425 .addField('var', .var) 400 426 .addField('block', .block) 427 428 def _innerClone 429 base._innerClone 430 _varExpr = _varExpr.clone 431 _block = _block.clone 401 432 402 433 def _bindImp … … 467 498 .addField('block', _block) 468 499 500 def _innerClone 501 base._innerClone 502 _start = _start.clone 503 _stop = _stop.clone 504 if _step, _step = _step.clone 505 469 506 def _bindImp 470 507 _start.bindImp … … 508 545 get dir from var as int 509 546 547 def _innerClone 548 base._innerClone 549 _start = _start.clone 550 _stop = _stop.clone 551 if _step, _step = _step.clone 552 510 553 def _bindImp 511 554 _start.bindImp … … 576 619 get multiArgs from var as List<of NameExpr>? 577 620 621 def _innerClone 622 base._innerClone 623 _what = _what.clone 624 if .multiArgs 625 _multiArgs = _multiArgs.toList 626 for i in .multiArgs.count, .multiArgs[i] = .multiArgs[i].clone 627 578 628 def _bindImp 579 629 _what.bindImp … … 689 739 .addField('falseStmts', _falseStmts) 690 740 .addField('ifInheritsVar', _ifInheritsVar) 741 742 def _innerClone 743 assert not _ifInheritsVar # should not have bound imp yet 744 base._innerClone 745 _cond = _cond.clone 746 _trueStmts = _trueStmts.clone 747 if _falseStmts, _falseStmts = _falseStmts.clone 691 748 692 749 def _bindImp … … 801 858 get target from var 802 859 860 def _innerClone 861 base._innerClone 862 if _event, _event = _event.clone 863 if _target, _target = _target.clone 864 803 865 def _bindImp 804 866 base._bindImp … … 864 926 .addField('block', .block) 865 927 928 def _innerClone 929 base._innerClone 930 _expr = _expr.clone 931 _block = _block.clone 932 866 933 def _bindImp 867 934 base._bindImp … … 894 961 get destination from var as Expr? 895 962 963 def _innerClone 964 base._innerClone 965 if _destination, _destination = _destination.clone 966 896 967 def _bindImp 897 968 base._bindImp … … 913 984 914 985 get stop from var as bool 986 987 def _innerClone 988 base._innerClone 989 _args = _args.toList 990 for i in _args.count, _args[i] = _args[i].clone 915 991 916 992 def _bindImp … … 944 1020 return _block.lastToken 945 1021 1022 def _innerClone 1023 base._innerClone 1024 _block = _block.clone 1025 946 1026 def _bindImp 947 1027 base._bindImp … … 985 1065 986 1066 get exprs from var 1067 1068 def _innerClone 1069 base._innerClone 1070 _exprs = _exprs.toList 1071 for i in _exprs.count, _exprs[i] = _exprs[i].clone 987 1072 988 1073 def _bindImp … … 1091 1176 get expr from var 1092 1177 1178 def _innerClone 1179 base._innerClone 1180 if _expr, _expr = _expr.clone 1181 1093 1182 def _bindImp 1094 1183 base._bindImp … … 1154 1243 has Subnodes 1155 1244 1156 def _bindImp 1157 base._bindImp 1158 for expr in _exprs 1159 expr.bindImp 1245 def _innerClone 1246 base._innerClone 1247 _exprs = _exprs.toList 1248 for i in _exprs.count, _exprs[i] = _exprs[i].clone 1249 1250 def _bindImp 1251 base._bindImp 1252 for expr in _exprs, expr.bindImp 1160 1253 1161 1254 … … 1199 1292 get finallyBlock from var 1200 1293 1294 def _innerClone 1295 base._innerClone 1296 _tryBlock = _tryBlock.clone 1297 _catchBlocks = _catchBlocks.toList 1298 for i in _catchBlocks.count, _catchBlocks[i] = _catchBlocks[i].clone 1299 if _successBlock, _successBlock = _successBlock.clone 1300 if _finallyBlock, _finallyBlock = _finallyBlock.clone 1301 1201 1302 def _bindImp 1202 1303 base._bindImp … … 1269 1370 return _block.lastToken 1270 1371 1372 def _innerClone 1373 base._innerClone 1374 assert _var is nil 1375 _block = _block.clone 1376 1271 1377 def _bindImp 1272 1378 base._bindImp … … 1309 1415 1310 1416 get expr from var 1417 1418 def _innerClone 1419 base._innerClone 1420 if _expr, _expr = _expr.clone 1311 1421 1312 1422 def _bindImp … … 1365 1475 get block from var 1366 1476 1477 def _innerClone 1478 assert _var is nil 1479 base._innerClone 1480 _varExpr = _varExpr.clone 1481 _initExpr = _initExpr.clone 1482 _block = _block.clone 1483 1367 1484 def _bindImp 1368 1485 base._bindImp … … 1394 1511 .addField('expr', _expr) 1395 1512 .addField('block', _block) 1513 1514 def _innerClone 1515 base._innerClone 1516 _expr = _expr.clone 1517 _block = _block.clone 1396 1518 1397 1519 def _bindExpr … … 1471 1593 base.addSubFields 1472 1594 .addField('expr', _expr) 1595 1596 def _innerClone 1597 base._innerClone 1598 if _expr, _expr = _expr.clone 1473 1599 1474 1600 def _bindImp … … 1551 1677 get block from var 1552 1678 1679 def _innerClone 1680 base._innerClone 1681 _targets = _targets.toList 1682 for i in _targets.count, _targets[i] = _targets[i].clone 1683 if _rightValues 1684 _rightValues = _rightValues.toList 1685 for i in _rightValues.count, _rightValues[i] = _rightValues[i].clone 1686 if _source, _source = _source.clone 1687 if _rvals 1688 _rvals = _rvals.toList 1689 for i in _rvals.count, _rvals[i] = _rvals[i].clone 1690 if _block, _block.clone 1691 1553 1692 def _bindImp 1554 1693 assert _source or _rvals -
cobra/trunk/Source/Utils.cobra
r2600 r2626 346 346 cue init 347 347 base.init 348 349 350 class BasicTests 351 352 test 353 # verify sanity 354 assert 2 + 2 == 4 355 356 # verify that .toList produces a new list when used on lists 357 t = [1, 2, 3] 358 assert t.toList is not t -
cobra/trunk/Tests/150-mixins/100-mixin-basics.cobra
r2625 r2626 12 12 return total 13 13 14 def moreLocalVarTesting 15 if true 16 a = 1 # test local var inside a compound statement 17 CobraCore.noOp(a) 18 while false 19 b = 1 20 CobraCore.noOp(b) 21 if false 22 using tr = File.openText('foo') 23 pass 24 14 25 15 26 mixin Named



