Jürg Billeter wrote:
I tested and it does have a small issue, which I suppose it's a compiler issue - maybe you can have a look:On Mon, 2008-02-04 at 23:04 +0200, Vlad Grecescu wrote: if (vapi_directories != null) { foreach (string vapidir in vapi_directories) { var filename = Path.build_filename (vapidir, basename); if (FileUtils.test (filename, FileTest.EXISTS)) { return filename; } } } string filename = Path.build_filename (Config.PACKAGE_DATADIR, "vapi", basename); if (FileUtils.test (filename, FileTest.EXISTS)) { return filename; } foreach (string vapidir in Environment.get_system_data_dirs ()) { var filename = Path.build_filename (vapidir, "vala/vapi", basename); if (FileUtils.test (filename, FileTest.EXISTS)) { return filename; } } The first return statement generates return (_tmp0 = filename, (vapidir = (g_free (vapidir), NULL)), (basename = (g_free (basename), NULL)), _tmp0); while the third generates return (_tmp3 = filename, (vapidir = (g_free (vapidir), NULL)), (basename = (g_free (basename), NULL)), (filename = (g_free (filename), NULL)), _tmp3); The difference seems to be that meanwhile a broader-scoped filename identifier appeared. I worked around the issue (patch attached) but I suppose a bug should be filed for the compiler - I just don't know what would be the desired behavior (issue an error or compile gracefully)? Thanks, -- Vlad http://blad.wordpress.com |
Index: vala/valacodecontext.vala
===================================================================
--- vala/valacodecontext.vala (revision 1097)
+++ vala/valacodecontext.vala (working copy)
@@ -387,23 +387,24 @@
public string get_package_path (string! pkg, [CCode (array_length_pos = 1.9)] string[]
vapi_directories) {
string basename = "%s.vapi".printf (pkg);
-
+ string filename;
+
if (vapi_directories != null) {
foreach (string vapidir in vapi_directories) {
- var filename = Path.build_filename (vapidir, basename);
+ filename = Path.build_filename (vapidir, basename);
if (FileUtils.test (filename, FileTest.EXISTS)) {
return filename;
}
}
}
- string filename = Path.build_filename (Config.PACKAGE_DATADIR, "vapi", basename);
+ filename = Path.build_filename (Config.PACKAGE_DATADIR, "vapi", basename);
if (FileUtils.test (filename, FileTest.EXISTS)) {
return filename;
}
foreach (string vapidir in Environment.get_system_data_dirs ()) {
- var filename = Path.build_filename (vapidir, "vala/vapi", basename);
+ filename = Path.build_filename (vapidir, "vala/vapi", basename);
if (FileUtils.test (filename, FileTest.EXISTS)) {
return filename;
}