Beispiel #1
0
        public void IncrementalParsing_LambdaParameters()
        {
            var code = @"module A;
int foo;
void main() {
	
}";

            var m    = DParser.ParseString(code);
            var main = m ["main"].First() as DMethod;
            var foo  = m ["foo"].First() as DVariable;

            var b = DResolver.SearchBlockAt(m, new CodeLocation(1, 4));

            Assert.That(b, Is.SameAs(main));

            code = @"module A;
int foo;
void main() {
int a;
(string ;
}";
            var  caret = new CodeLocation(9, 5);
            bool _u;
            var  newMod = IncrementalParsing.UpdateBlockPartly(main.Body, code, DocumentHelper.LocationToOffset(code, caret), caret, out _u) as DMethod;

            var lambda = newMod.Children [0] as DMethod;

            Assert.That(lambda, Is.Not.Null);
            Assert.That(lambda.Parameters.Count, Is.EqualTo(1));
            Assert.That(lambda.Parameters [0].Type, Is.Not.Null);
            Assert.That(lambda.Parameters [0].NameHash, Is.EqualTo(DTokens.IncompleteIdHash));
        }
Beispiel #2
0
        public void IncrementalParsing_Lambdas()
        {
            var code = @"module A;
int foo;
void main() {
	
}";

            var m    = DParser.ParseString(code);
            var main = m ["main"].First() as DMethod;
            var foo  = m ["foo"].First() as DVariable;

            IStatement stmt;
            var        b = DResolver.SearchBlockAt(m, new CodeLocation(1, 4), out stmt);

            Assert.That(b, Is.SameAs(main));
            Assert.That(stmt, Is.TypeOf(typeof(BlockStatement)));

            code = @"module A;
int foo;
void main() {
int a;
(string b) =>  ;
}";
            var  caret = new CodeLocation(15, 5);
            bool _u;

            IncrementalParsing.UpdateBlockPartly(stmt as BlockStatement, code, DocumentHelper.LocationToOffset(code, caret), caret, out _u);

            var main2 = m ["main"].First() as DMethod;

            Assert.That(main, Is.SameAs(main2));

            var foo2 = m ["foo"].First() as DVariable;

            Assert.That(foo2, Is.SameAs(foo));

            var lambda = main2.AdditionalChildren [0] as DMethod;

            Assert.That(lambda, Is.Not.Null);
            Assert.That(lambda.Parameters.Count, Is.EqualTo(1));
            Assert.That(lambda.Parameters [0].Type, Is.Not.Null);
            Assert.That(lambda.Parameters [0].Name, Is.EqualTo("b"));

            b = DResolver.SearchBlockAt(m, caret, out stmt);
            Assert.That(lambda, Is.SameAs(b));
            Assert.That(stmt, Is.TypeOf(typeof(ReturnStatement)));
        }
Beispiel #3
0
        public void IncrementalParsing_()
        {
            var code = @"module A;
int foo;
void main() {}";

            var m    = DParser.ParseString(code);
            var main = m ["main"].First() as DMethod;
            var foo  = m ["foo"].First() as DVariable;

            IStatement stmt;
            var        b = DResolver.SearchBlockAt(m, new CodeLocation(11, 3), out stmt);

            Assert.That(b, Is.SameAs(main));
            Assert.That(stmt, Is.Null);

            code = @"module A;
int foo;
void main(
string ) {

}";
            var  caret = new CodeLocation(8, 4);
            bool _u;

            IncrementalParsing.UpdateBlockPartly(m, code, DocumentHelper.LocationToOffset(code, caret), caret, out _u);

            var main2 = m ["main"].First() as DMethod;

            Assert.That(main, Is.Not.SameAs(main2));
            Assert.That(main2.Parameters.Count, Is.EqualTo(1));
            Assert.That(main2.Parameters [0].Type, Is.Not.Null);
            Assert.That(main2.Parameters [0].NameHash, Is.EqualTo(DTokens.IncompleteIdHash));

            var foo2 = m ["foo"].First() as DVariable;

            Assert.That(foo2, Is.SameAs(foo));
        }