diff --git a/CodeCompletion/DomSyntaxTreeVisitor.cs b/CodeCompletion/DomSyntaxTreeVisitor.cs index 2b65ea052..464260ff0 100644 --- a/CodeCompletion/DomSyntaxTreeVisitor.cs +++ b/CodeCompletion/DomSyntaxTreeVisitor.cs @@ -4652,12 +4652,19 @@ namespace CodeCompletion public override void visit(name_assign_expr _name_assign_expr) // SSM 27.06.13 { returned_scope = null; + if (_name_assign_expr.expr == null) + _name_assign_expr.expr = new ident(_name_assign_expr.name.name); _name_assign_expr.expr.visit(this); if (returned_scope != null) { ElementScope es = new ElementScope(new SymInfo(_name_assign_expr.name.name, SymbolKind.Property, ""), returned_scope, cur_scope); cur_scope.AddName(_name_assign_expr.name.name, es); } + else + { + ElementScope es = new ElementScope(new SymInfo(_name_assign_expr.name.name, SymbolKind.Property, ""), new UnknownScope(new SymInfo("",SymbolKind.Type,"")), cur_scope); + cur_scope.AddName(_name_assign_expr.name.name, es); + } } public override void visit(name_assign_expr_list _name_assign_expr_list) // SSM 27.06.13 { @@ -4668,7 +4675,7 @@ namespace CodeCompletion { SymScope tmp = cur_scope; TypeScope ts = null; - cur_scope = ts = new TypeScope(SymbolKind.Class, entry_scope, null); + cur_scope = ts = new TypeScope(SymbolKind.Class, cur_scope, null); tmp.AddName("class", cur_scope); ts.loc = get_location(_unnamed_type_object); ts.si = new SymInfo("class", SymbolKind.Class, ""); diff --git a/TestSuite/intellisense_tests/autoclass1.pas b/TestSuite/intellisense_tests/autoclass1.pas new file mode 100644 index 000000000..4b18cbf94 --- /dev/null +++ b/TestSuite/intellisense_tests/autoclass1.pas @@ -0,0 +1,11 @@ +type + MyClass = class + a, b, c: integer; + obj := new class(d := 'r', a, b{@property class.b: integer;@}, c); + end; +Begin + var x := new MyClass; + x.obj.b{@property class.b: integer;@} := 2; + var x2{@var x2: class;@} := new class(x); + x2.x{@property class.x: MyClass;@} := nil; +End. \ No newline at end of file