By “dependency list” I mean the list of
goog.require('…');
statements at the beginning of the transpiled application file.
After debugging this, I found out that in GoogDepsWriter:229 replacing
if (!restOfDeps.contains(gd.className) &&
!gd.fileInfo.isExtern && !isExternal(gd.className) &&
!usedDeps.contains(gd.class Name))
with
if (!restOfDeps.contains(gd.className) &&
!gd.fileInfo.isExtern && !isExternal(gd.className)) seems to fix this
particular problem.
I’m still not sure what the proper fix is. Our class (A) gets added to usedDeps
in this snippet
if (gd.fileInfo.staticDeps != null)
{
for (String dep :
gd.fileInfo.staticDeps)
{
if (!deps.contains(dep))
deps.add(dep);
if (!usedDeps.contains(dep))
usedDeps.add(dep);
}
}
When I inspect this I see that gd.className == A, and gd.fileInfo.staticDeps[0]
is also A.
Does that make sense?
________________________________
From: Alex Harui <[email protected]>
Sent: Wednesday, November 28, 2018 7:03:55 PM
To: [email protected]
Subject: Re: Dependency Missing
What is the "dependency list" you are referring to?
On 11/28/18, 8:55 AM, "Yishay Weiss" <[email protected]> wrote:
Hi Alex,
It looks like commit 3252eb312b09cbf5270d78aadc785d757743d323 (fix deps
writing when we promote requires from static initializers) in the compiler has
broken our app. One of the classes isn’t added to the dependency list despite
being imported.
I still haven’t been able to isolate this to a test case, but one thing
that strikes me about the missing dependency is that it has a static function
before the constructor. Also, the constructor takes an argument.
If something pops to mind, please let us know. Otherwise, I’ll try to debug
the compiler tomorrow.
Thanks.