| 429 | | expr = _expr |
| 430 | | isMethodSig = false |
| 431 | | isDynamic = false |
| 432 | | if expr inherits TypeExpr |
| 433 | | if expr.containedType inherits ArrayType |
| 434 | | # arrays |
| 435 | | sw.write('new ') |
| 436 | | sw.write((expr.containedType to ArrayType).theWrappedType.sharpRef) |
| 437 | | sw.write(r'[') |
| 438 | | .writeSharpArgs(sw) |
| 439 | | sw.write(r']') |
| | 429 | if _helperMethod |
| | 430 | sw.write(_helperMethod.name + '(') |
| | 431 | sep = '' |
| | 432 | for arg in _args |
| | 433 | sw.write(sep) |
| | 434 | if arg inherits AssignExpr |
| | 435 | arg = arg.right |
| | 436 | arg.writeSharpDefInContext(sw, false) |
| | 437 | sep = ',' |
| | 438 | sw.write(')') |
| | 439 | else |
| | 440 | expr = _expr |
| | 441 | isMethodSig = false |
| | 442 | isDynamic = false |
| | 443 | if expr inherits TypeExpr |
| | 444 | if expr.containedType inherits ArrayType |
| | 445 | # arrays |
| | 446 | sw.write('new ') |
| | 447 | sw.write((expr.containedType to ArrayType).theWrappedType.sharpRef) |
| | 448 | sw.write(r'[') |
| | 449 | .writeSharpArgs(sw) |
| | 450 | sw.write(r']') |
| | 451 | else |
| | 452 | sw.write('new ') |
| | 453 | expr.writeSharpDef(sw) |
| | 454 | sw.write('(') |
| | 455 | .writeSharpArgs(sw) |
| | 456 | sw.write(')') |
| | 457 | else if expr inherits IdentifierExpr |
| | 458 | if expr.isTypeReference |
| | 459 | sw.write('new ') |
| | 460 | expr.writeSharpDef(sw) |
| | 461 | sw.write('(') |
| | 462 | .writeSharpArgs(sw) |
| | 463 | sw.write(')') |
| | 464 | else if expr.receiverType inherits GenericParam # TODO: shouldn't expr.isTypeReference above have caught this? |
| | 465 | sw.write('new [expr.receiverType.sharpRef](') |
| | 466 | .writeSharpArgs(sw) |
| | 467 | sw.write(')') |
| | 468 | else if expr.type inherits MethodSig |
| | 469 | isMethodSig = true |
| | 470 | else if expr.type.isSystemTypeClass or _type.isDynamic |
| | 471 | isDynamic = true |
| | 472 | else |
| | 473 | assert false, expr # TODO: .throwError |
| | 474 | else if expr inherits IndexExpr |
| | 475 | if expr.type inherits MethodSig |
| | 476 | isMethodSig = true |
| | 477 | else if expr.type.isSystemTypeClass or _type.isDynamic |
| | 478 | isDynamic = true |
| | 479 | else |
| | 480 | assert false, expr # TODO: .throwError |
| 446 | | else if expr inherits IdentifierExpr |
| 447 | | if expr.isTypeReference |
| 448 | | sw.write('new ') |
| 449 | | expr.writeSharpDef(sw) |
| 450 | | sw.write('(') |
| 451 | | .writeSharpArgs(sw) |
| | 488 | else if isDynamic |
| | 489 | defi = (expr to dynamic).definition |
| | 490 | assert not defi inherits Box, expr # TODO: just curious |
| | 491 | what = if(defi inherits IType, 'typeof([defi.sharpName])', defi.sharpName to String) |
| | 492 | if defi inherits IVar |
| | 493 | if defi.type.isDynamic |
| | 494 | what = '(System.Type)' + what |
| | 495 | sw.write('Activator.CreateInstance([what]') |
| | 496 | .writeSharpArgs(sw, ', ') |
| 453 | | else if expr.receiverType inherits GenericParam # TODO: shouldn't expr.isTypeReference above have caught this? |
| 454 | | sw.write('new [expr.receiverType.sharpRef](') |
| 455 | | .writeSharpArgs(sw) |
| 456 | | sw.write(')') |
| 457 | | else if expr.type inherits MethodSig |
| 458 | | isMethodSig = true |
| 459 | | else if expr.type.isSystemTypeClass or _type.isDynamic |
| 460 | | isDynamic = true |
| 461 | | else |
| 462 | | assert false, expr # TODO: .throwError |
| 463 | | else if expr inherits IndexExpr |
| 464 | | if expr.type inherits MethodSig |
| 465 | | isMethodSig = true |
| 466 | | else if expr.type.isSystemTypeClass or _type.isDynamic |
| 467 | | isDynamic = true |
| 468 | | else |
| 469 | | assert false, expr # TODO: .throwError |
| 470 | | else |
| 471 | | assert false, expr # TODO: .throwError |
| 472 | | if isMethodSig |
| 473 | | expr.writeSharpDef(sw) |
| 474 | | sw.write('(') |
| 475 | | .writeSharpArgs(sw) |
| 476 | | sw.write(')') |
| 477 | | else if isDynamic |
| 478 | | defi = (expr to dynamic).definition |
| 479 | | assert not defi inherits Box, expr # TODO: just curious |
| 480 | | what = if(defi inherits IType, 'typeof([defi.sharpName])', defi.sharpName to String) |
| 481 | | if defi inherits IVar |
| 482 | | if defi.type.isDynamic |
| 483 | | what = '(System.Type)' + what |
| 484 | | sw.write('Activator.CreateInstance([what]') |
| 485 | | .writeSharpArgs(sw, ', ') |
| 486 | | sw.write(')') |