blob: fcef6dfecdd582f7dbc866e26008cca71ed1ec65 [file] [log] [blame] [edit]
dart_library.library('opassign', null, /* Imports */[
"dart/_runtime",
'dart/core'
], /* Lazy imports */[
], function(exports, dart, core) {
'use strict';
let dartx = dart.dartx;
dart.copyProperties(exports, {
get index() {
core.print('called "index" getter');
return 0;
}
});
dart.defineLazyProperties(exports, {
get _foo() {
return new Foo();
}
});
dart.copyProperties(exports, {
get foo() {
core.print('called "foo" getter');
return exports._foo;
}
});
class Foo extends core.Object {
Foo() {
this.x = 100;
}
}
function main() {
let f = dart.map([0, 40]);
core.print('should only call "index" 2 times:');
let i = exports.index;
f.set(i, dart.dsend(f.get(i), '+', 1));
forcePostfix((() => {
let i = exports.index, x = f.get(i);
f.set(i, dart.dsend(x, '+', 1));
return x;
})());
core.print('should only call "foo" 2 times:');
let o = exports.foo;
dart.dput(o, 'x', dart.dsend(dart.dload(o, 'x'), '+', 1));
forcePostfix((() => {
let o = exports.foo, x = dart.dload(o, 'x');
dart.dput(o, 'x', dart.dsend(x, '+', 1));
return x;
})());
core.print('op assign test, should only call "index" twice:');
let i$ = exports.index;
f.set(i$, dart.dsend(f.get(i$), '+', f.get(exports.index)));
}
dart.fn(main);
function forcePostfix(x) {
}
dart.fn(forcePostfix);
// Exports:
exports.Foo = Foo;
exports.main = main;
exports.forcePostfix = forcePostfix;
});