compiler: open byte slice and string embeds using the absolute path
The paths vector contains the names of the files that the embed_files_ map is keyed by. While the code processing embed.FS values looks up the paths in the embed_files_ map, the code processing string and byte slice embeds tries opening the files using their names directly. Look up the full paths in the embed_files_ map when opening them. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/291429
This commit is contained in:
parent
f3d7fd1475
commit
9769564e74
@ -1,4 +1,4 @@
|
||||
78770fd9c29037dec8b2919c0f02067915c6ad33
|
||||
a5d7c4225fbbd06b97db6fa424cc0cb5191082d4
|
||||
|
||||
The first line of this file holds the git revision number of the last
|
||||
merge done from the gofrontend repository.
|
||||
|
@ -812,8 +812,7 @@ Gogo::initializer_for_embeds(Type* type,
|
||||
}
|
||||
|
||||
// Each pattern in the embedcfg file maps to a list of file
|
||||
// names. For each file name, the embedcfg file records an
|
||||
// absolute path. Add those absolute paths to PATHS.
|
||||
// names. Add those file names to PATHS.
|
||||
for (std::vector<std::string>::const_iterator pf = pp->second.begin();
|
||||
pf != pp->second.end();
|
||||
pf++)
|
||||
@ -865,7 +864,7 @@ Gogo::initializer_for_embeds(Type* type,
|
||||
}
|
||||
|
||||
std::string data;
|
||||
if (!read_file(paths[0].c_str(), loc, &data))
|
||||
if (!read_file(this->embed_files_[paths[0]].c_str(), loc, &data))
|
||||
return Expression::make_error(loc);
|
||||
|
||||
Expression* e = Expression::make_string(data, loc);
|
||||
|
Loading…
Reference in New Issue
Block a user