modules.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. <rtl code>
  2. var m1 = function (){
  3. var ci = 123;
  4. function Base(){
  5. this.i = 0;
  6. }
  7. function T(){
  8. Base.call(this);
  9. }
  10. RTL$.extend(T, Base);
  11. function TPA(){
  12. }
  13. function TPB(){
  14. Base.call(this);
  15. }
  16. RTL$.extend(TPB, Base);
  17. function ExportPointerOnly(){
  18. Base.call(this);
  19. }
  20. RTL$.extend(ExportPointerOnly, Base);
  21. var i = 0;
  22. function anonymous$1(){
  23. this.i = 0;
  24. }
  25. var pr = null;
  26. var pr2 = null;
  27. function p(){
  28. }
  29. function makeTPA(){
  30. var result = null;
  31. result = new TPA();
  32. return result;
  33. }
  34. function makeTPB(){
  35. var result = null;
  36. result = new TPB();
  37. return result;
  38. }
  39. function constructor(){
  40. }
  41. function prototype(){
  42. }
  43. pr = new anonymous$1();
  44. return {
  45. ci: ci,
  46. Base: Base,
  47. T: T,
  48. TPA: TPA,
  49. TPB: TPB,
  50. ExportPointerOnly: ExportPointerOnly,
  51. i: function(){return i;},
  52. pr: function(){return pr;},
  53. pr2: function(){return pr2;},
  54. p: p,
  55. makeTPA: makeTPA,
  56. makeTPB: makeTPB,
  57. constructor$: constructor,
  58. prototype$: prototype
  59. }
  60. }();
  61. var m2 = function (m1){
  62. function T(){
  63. m1.T.call(this);
  64. this.i2 = 0;
  65. }
  66. RTL$.extend(T, m1.T);
  67. var r = new m1.T();
  68. var r2 = new T();
  69. var pb = null;
  70. var ptr = null;
  71. var ptr2 = null;
  72. var ptrA = null;
  73. function p(i/*INTEGER*/){
  74. }
  75. function ref(i/*VAR INTEGER*/){
  76. }
  77. function castToImportedPointer(p/*PBase*/){
  78. var p2 = null;
  79. if (p instanceof m1.ExportPointerOnly){
  80. p2 = p;
  81. RTL$.assert(RTL$.typeGuard(p2, m1.ExportPointerOnly) != null);
  82. }
  83. }
  84. ptr = new m1.T();
  85. pb = ptr;
  86. RTL$.typeGuard(pb, m1.T).i = 123;
  87. ptr2 = new T();
  88. ptr2.i = 1;
  89. ptr2.i2 = 2;
  90. ptrA = m1.makeTPA();
  91. m1.p();
  92. p(m1.i());
  93. p(m1.ci);
  94. ref(RTL$.makeRef(m1.pr2(), "i"));
  95. }(m1);
  96. var m3 = function (m1, m2){
  97. function T(){
  98. m2.T.call(this);
  99. }
  100. RTL$.extend(T, m2.T);
  101. var r = new m2.T();
  102. var r2 = new T();
  103. var a = RTL$.makeArray(3, function(){return new m2.Base();});
  104. var ptr = null;
  105. var pb = null;
  106. var pTPB = null;
  107. ptr = new m2.T();
  108. pb = ptr;
  109. RTL$.typeGuard(pb, m2.T).i = 123;
  110. pb = m2.makeTPB();
  111. pTPB = RTL$.typeGuard(pb, m2.TPB);
  112. m2.p();
  113. }(m2, m1);