Comments (3)
I spent a bit of time investigating this issue, and it appears that the compiled code fails to read the fs
property.
For some funky reason, editing RootNode.clock
to:
@override
Clock get clock {
print(fs);
print(fs.clock);
return fs.clock;
}
makes the error disappear.
I'm not sure why adding prints in the getter somehow fixes the problem. In any case, it looks like a web compiler issue.
My current theory is that this is caused by overrides in RootNode
(either fs
or clock
).
Maybe there are edge-cases in the web compiler causing this.
To test that assumption, I edited the source of package:file
to make it so that RootNode
neither overrides this.fs
nor this.clock
, and the code seems to correctly work now.
The core of the fix is:
abstract class RealNode extends Node {
/// Constructs a new [RealNode] as a child of the specified [parent].
- RealNode(DirectoryNode? parent) : super(parent) {
+ RealNode(DirectoryNode? parent, {required this.clock}) : super(parent) {
int now = clock.now.millisecondsSinceEpoch;
changed = now;
modified = now;
accessed = now;
}
/// See [NodeBasedFileSystem.clock].
- Clock get clock => parent.clock;
+ final Clock clock;
(with changes in DIrectoryNode & co to respect those changes).
That seems to make the error disappear.
I wasn't able to separately reproduce what appears to be a compiler issue outside of package:file
unfortunately.
from file.dart.
Seems like a compiler bug.
from file.dart.
Indeed.
I opened a compiler issue too dart-lang/sdk#52170
from file.dart.
Related Issues (20)
- Add file permissions APIs HOT 3
- Constructing a memory RealNode with a non-root parent fails on the Web with dart2js + null safety HOT 3
- MemoryDirectory does not list files properly on Windows HOT 5
- The system was unable to move the file to a different disk drive
- MemoryFileSystem is 10x slower to write than LocalFileSystem HOT 6
- What is the best way to check in a unit-test if all randomaccessfile objects are closed properly?
- Best way to close the LocalFileSystem HOT 1
- File created via MemoryFileSystem is implemented differently from dart:io File HOT 2
- Please add tags for released versions
- FileSystem.directory(...).list(...) and listSync(...) fail on self-linked directories HOT 3
- CI failing on windows (due to a failing test - succeedsIfDestinationIsEmptyDirectory) HOT 1
- MemoryFileSystem.isDirectory(r'\') crashes HOT 2
- move this package into the google.dev publisher? HOT 5
- Seeing issues when an older package:file is run on a newer SDK HOT 12
- Migrate mixins to be mixin declarations HOT 8
- MemoryFileSystem addStream misbehaves on error HOT 1
- Local and memory implementation throw different exceptions
- Any breaking changes introduced in 7.0.0?
- Filenames encoded on Gnome's Google Drive
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from file.dart.