summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRico Tzschichholz <ricotz@ubuntu.com>2017-12-14 10:23:14 +0100
committerRico Tzschichholz <ricotz@ubuntu.com>2017-12-14 10:26:31 +0100
commit2dc47785171f8f62f7f017939681e0d5cf3e9847 (patch)
tree856f77592560ac46fb3d7be29c66353778b90531
parent0c05b6e39d2a1f10cdd3f155c85d39f7a563080b (diff)
downloadvala-2dc47785171f8f62f7f017939681e0d5cf3e9847.tar.gz
Release taken references to CodeContext after using it
https://bugzilla.gnome.org/show_bug.cgi?id=712694
-rw-r--r--codegen/valaccodebasemodule.vala3
-rw-r--r--codegen/valagirwriter.vala3
-rw-r--r--vala/valaflowanalyzer.vala2
-rw-r--r--vala/valagenieparser.vala1
-rw-r--r--vala/valagirparser.vala2
-rw-r--r--vala/valaparser.vala1
-rw-r--r--vala/valasemanticanalyzer.vala7
-rw-r--r--vala/valasymbolresolver.vala3
8 files changed, 19 insertions, 3 deletions
diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala
index f99acce08..56ff94291 100644
--- a/codegen/valaccodebasemodule.vala
+++ b/codegen/valaccodebasemodule.vala
@@ -526,6 +526,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
var stream = FileStream.open (context.symbols_filename, "w");
if (stream == null) {
Report.error (null, "unable to open `%s' for writing".printf (context.symbols_filename));
+ this.context = null;
return;
}
@@ -552,6 +553,8 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
Report.error (null, "unable to open `%s' for writing".printf (context.internal_header_filename));
}
}
+
+ this.context = null;
}
public void push_context (EmitContext emit_context) {
diff --git a/codegen/valagirwriter.vala b/codegen/valagirwriter.vala
index 47e1d2a9d..bd814f08e 100644
--- a/codegen/valagirwriter.vala
+++ b/codegen/valagirwriter.vala
@@ -165,6 +165,7 @@ public class Vala.GIRWriter : CodeVisitor {
stream = FileStream.open (filename, "w");
if (stream == null) {
Report.error (null, "unable to open `%s' for writing".printf (filename));
+ this.context = null;
return;
}
@@ -196,6 +197,8 @@ public class Vala.GIRWriter : CodeVisitor {
if (our_namespaces.size == 0) {
Report.error (null, "No suitable namespace found to export for GIR");
}
+
+ this.context = null;
}
private void write_doc (string? comment) {
diff --git a/vala/valaflowanalyzer.vala b/vala/valaflowanalyzer.vala
index 3683b817f..122e58d7f 100644
--- a/vala/valaflowanalyzer.vala
+++ b/vala/valaflowanalyzer.vala
@@ -112,6 +112,8 @@ public class Vala.FlowAnalyzer : CodeVisitor {
file.accept (this);
}
}
+
+ this.context = null;
}
public override void visit_source_file (SourceFile source_file) {
diff --git a/vala/valagenieparser.vala b/vala/valagenieparser.vala
index df4f66e9b..f9aba46ff 100644
--- a/vala/valagenieparser.vala
+++ b/vala/valagenieparser.vala
@@ -86,6 +86,7 @@ public class Vala.Genie.Parser : CodeVisitor {
public void parse (CodeContext context) {
this.context = context;
context.accept (this);
+ this.context = null;
}
public override void visit_source_file (SourceFile source_file) {
diff --git a/vala/valagirparser.vala b/vala/valagirparser.vala
index 0754e8d34..edc580c68 100644
--- a/vala/valagirparser.vala
+++ b/vala/valagirparser.vala
@@ -1327,6 +1327,8 @@ public class Vala.GirParser : CodeVisitor {
foreach (var metadata in metadata_roots) {
report_unused_metadata (metadata);
}
+
+ this.context = null;
}
void map_vala_to_gir () {
diff --git a/vala/valaparser.vala b/vala/valaparser.vala
index ec5e34e82..6228ba98e 100644
--- a/vala/valaparser.vala
+++ b/vala/valaparser.vala
@@ -76,6 +76,7 @@ public class Vala.Parser : CodeVisitor {
public void parse (CodeContext context) {
this.context = context;
context.accept (this);
+ this.context = null;
}
public override void visit_source_file (SourceFile source_file) {
diff --git a/vala/valasemanticanalyzer.vala b/vala/valasemanticanalyzer.vala
index a7bbb18e6..fce226b1f 100644
--- a/vala/valasemanticanalyzer.vala
+++ b/vala/valasemanticanalyzer.vala
@@ -28,9 +28,8 @@ using GLib;
* Code visitor analyzing and checking code.
*/
public class Vala.SemanticAnalyzer : CodeVisitor {
- public CodeContext context { get; set; }
+ CodeContext context;
- public Symbol root_symbol;
public Symbol current_symbol { get; set; }
public SourceFile current_source_file { get; set; }
@@ -181,7 +180,7 @@ public class Vala.SemanticAnalyzer : CodeVisitor {
public void analyze (CodeContext context) {
this.context = context;
- root_symbol = context.root;
+ var root_symbol = context.root;
bool_type = new BooleanType ((Struct) root_symbol.scope.lookup ("bool"));
string_type = new ObjectType ((Class) root_symbol.scope.lookup ("string"));
@@ -224,6 +223,8 @@ public class Vala.SemanticAnalyzer : CodeVisitor {
current_symbol = root_symbol;
context.root.check (context);
context.accept (this);
+
+ this.context = null;
}
public override void visit_source_file (SourceFile file) {
diff --git a/vala/valasymbolresolver.vala b/vala/valasymbolresolver.vala
index 32c84e4c3..53ad72821 100644
--- a/vala/valasymbolresolver.vala
+++ b/vala/valasymbolresolver.vala
@@ -42,6 +42,9 @@ public class Vala.SymbolResolver : CodeVisitor {
root_symbol = context.root;
context.root.accept (this);
+
+ root_symbol = null;
+ this.context = null;
}
public override void visit_namespace (Namespace ns) {