150
149
DUChainReleaser releaseTop(top);
151
150
DUChainWriteLocker lock(DUChain::lock());
153
QList<SimpleRange> ranges;
154
ranges << SimpleRange(0, 43, 0, 45) << SimpleRange(0, 51, 0, 53) << SimpleRange(0, 58, 0, 60);
152
QList<RangeInRevision> ranges;
153
ranges << RangeInRevision(0, 43, 0, 45) << RangeInRevision(0, 51, 0, 53) << RangeInRevision(0, 58, 0, 60);
155
154
compareUses(top->localDeclarations().at(1), ranges);
158
ranges << SimpleRange(0, 47, 0, 48) << SimpleRange(0, 55, 0, 56) << SimpleRange(0, 62, 0, 63);
157
ranges << RangeInRevision(0, 47, 0, 48) << RangeInRevision(0, 55, 0, 56) << RangeInRevision(0, 62, 0, 63);
159
158
compareUses(top->childContexts().first()->localDeclarations().first(), ranges);
186
185
DUChainReleaser releaseTop(top);
187
186
DUChainWriteLocker lock(DUChain::lock());
189
QList<SimpleRange> ranges;
190
ranges << SimpleRange(0, 25, 0, 27);
191
ranges << SimpleRange(0, 29, 0, 31);
192
ranges << SimpleRange(0, 37, 0, 39);
193
ranges << SimpleRange(0, 41, 0, 43);
194
ranges << SimpleRange(0, 51, 0, 53);
188
QList<RangeInRevision> ranges;
189
ranges << RangeInRevision(0, 25, 0, 27);
190
ranges << RangeInRevision(0, 29, 0, 31);
191
ranges << RangeInRevision(0, 37, 0, 39);
192
ranges << RangeInRevision(0, 41, 0, 43);
193
ranges << RangeInRevision(0, 51, 0, 53);
195
194
compareUses(top->localDeclarations().at(1), ranges);
206
205
DUChainReleaser releaseTop(top);
207
206
DUChainWriteLocker lock(DUChain::lock());
209
QList<SimpleRange> ranges;
210
ranges << SimpleRange(0, 28, 0, 30);
211
ranges << SimpleRange(0, 32, 0, 34);
212
ranges << SimpleRange(0, 38, 0, 40);
213
ranges << SimpleRange(0, 42, 0, 44);
208
QList<RangeInRevision> ranges;
209
ranges << RangeInRevision(0, 28, 0, 30);
210
ranges << RangeInRevision(0, 32, 0, 34);
211
ranges << RangeInRevision(0, 38, 0, 40);
212
ranges << RangeInRevision(0, 42, 0, 44);
214
213
compareUses(top->childContexts().at(1)->localDeclarations().at(0), ranges);
400
399
DUChainReleaser releaseTop(top);
401
400
DUChainWriteLocker lock(DUChain::lock());
403
QList<SimpleRange> ranges;
404
ranges << SimpleRange(0, 66, 0, 66 + 2);
405
ranges << SimpleRange(0, 78, 0, 78 + 2);
406
ranges << SimpleRange(0, 85, 0, 85 + 2);
402
QList<RangeInRevision> ranges;
403
ranges << RangeInRevision(0, 66, 0, 66 + 2);
404
ranges << RangeInRevision(0, 78, 0, 78 + 2);
405
ranges << RangeInRevision(0, 85, 0, 85 + 2);
407
406
compareUses(top->localDeclarations().first(), ranges);
409
compareUses(top->localDeclarations().at(1), SimpleRange(0, 70, 0, 70 + 3));
408
compareUses(top->localDeclarations().at(1), RangeInRevision(0, 70, 0, 70 + 3));
412
411
void TestUses::classAndConstWithSameName()
418
417
DUChainReleaser releaseTop(top);
419
418
DUChainWriteLocker lock(DUChain::lock());
421
compareUses(top->localDeclarations().first(), SimpleRange(0, 38, 0, 39));
422
compareUses(top->localDeclarations().at(1), SimpleRange(0, 31, 0, 32));
423
compareUses(top->localDeclarations().at(2), SimpleRange(0, 76, 0, 77));
424
compareUses(top->localDeclarations().at(3), SimpleRange(0, 73, 0, 74));
420
compareUses(top->localDeclarations().first(), RangeInRevision(0, 38, 0, 39));
421
compareUses(top->localDeclarations().at(1), RangeInRevision(0, 31, 0, 32));
422
compareUses(top->localDeclarations().at(2), RangeInRevision(0, 76, 0, 77));
423
compareUses(top->localDeclarations().at(3), RangeInRevision(0, 73, 0, 74));
750
749
QVERIFY(decs[0]->identifier().nameEquals(Identifier("name1")));
751
750
QVERIFY(decs[0]->isFunctionDeclaration());
752
compareUses(decs[0], SimpleRange(2, 4, 2, 9));
751
compareUses(decs[0], RangeInRevision(2, 4, 2, 9));
753
752
// property name1
754
753
QVERIFY(decs[1]->identifier().nameEquals(Identifier("name1")));
755
754
QVERIFY(!decs[1]->isFunctionDeclaration());
756
compareUses(decs[1], SimpleRange(2, 17, 2, 22));
755
compareUses(decs[1], RangeInRevision(2, 17, 2, 22));
758
757
// property name2
759
758
QVERIFY(decs[2]->identifier().nameEquals(Identifier("name2")));
760
759
QVERIFY(!decs[2]->isFunctionDeclaration());
761
compareUses(decs[2], SimpleRange(3, 4, 3, 9));
760
compareUses(decs[2], RangeInRevision(3, 4, 3, 9));
763
762
QVERIFY(decs[3]->identifier().nameEquals(Identifier("name2")));
764
763
QVERIFY(decs[3]->isFunctionDeclaration());
765
compareUses(decs[3], SimpleRange(3, 15, 3, 20));
764
compareUses(decs[3], RangeInRevision(3, 15, 3, 20));
768
767
void TestUses::nestedMethodCalls()
787
786
QVERIFY(topDecs[0]->identifier().nameEquals(Identifier("a")));
788
787
QVERIFY(dynamic_cast<ClassDeclaration*>(topDecs[0]));
789
compareUses(topDecs[0], SimpleRange(3, 9, 3, 10));
788
compareUses(topDecs[0], RangeInRevision(3, 9, 3, 10));
791
790
QVERIFY(topDecs[1]->identifier().nameEquals(Identifier("b")));
792
791
QVERIFY(dynamic_cast<ClassDeclaration*>(topDecs[1]));
793
compareUses(topDecs[1], SimpleRange(4, 9, 4, 10));
792
compareUses(topDecs[1], RangeInRevision(4, 9, 4, 10));
796
795
QVERIFY(topDecs[2]->identifier().nameEquals(Identifier("a")));
797
796
QVERIFY(dynamic_cast<VariableDeclaration*>(topDecs[2]));
798
compareUses(topDecs[2], SimpleRange(5, 0, 5, 2));
797
compareUses(topDecs[2], RangeInRevision(5, 0, 5, 2));
800
799
QVERIFY(topDecs[3]->identifier().nameEquals(Identifier("b")));
801
800
QVERIFY(dynamic_cast<VariableDeclaration*>(topDecs[3]));
802
compareUses(topDecs[3], SimpleRange(5, 6, 5, 8));
801
compareUses(topDecs[3], RangeInRevision(5, 6, 5, 8));
805
804
Declaration* methodADec = topDecs[0]->internalContext()->localDeclarations().first();
806
805
QVERIFY(methodADec->isFunctionDeclaration());
807
compareUses(methodADec, SimpleRange(5, 4, 5, 5));
806
compareUses(methodADec, RangeInRevision(5, 4, 5, 5));
810
809
Declaration* methodBDec = topDecs[1]->internalContext()->localDeclarations().first();
811
810
QVERIFY(methodBDec->isFunctionDeclaration());
812
compareUses(methodBDec, SimpleRange(5, 10, 5, 11));
811
compareUses(methodBDec, RangeInRevision(5, 10, 5, 11));
815
814
void TestUses::unset()
876
877
Declaration* dec;
878
dec = top->findDeclarations(QualifiedIdentifier("foo")).first();
879
dec = top->findDeclarations(QualifiedIdentifier("foo")).last();
879
880
QCOMPARE(dec->kind(), Declaration::Namespace);
880
compareUses(dec, QList<SimpleRange>() << SimpleRange(8, 1, 8, 4)
881
<< SimpleRange(9, 1, 9, 4)
882
<< SimpleRange(10, 1, 10, 4)
883
<< SimpleRange(11, 5, 11, 8)
884
<< SimpleRange(12, 15, 12, 18)
885
<< SimpleRange(13, 17, 13, 20)
886
<< SimpleRange(13, 45, 13, 48));
881
compareUses(dec, QList<RangeInRevision>()
882
<< RangeInRevision(1, 10, 1, 13)
883
<< RangeInRevision(8, 1, 8, 4)
884
<< RangeInRevision(9, 1, 9, 4)
885
<< RangeInRevision(10, 1, 10, 4)
886
<< RangeInRevision(11, 5, 11, 8)
887
<< RangeInRevision(12, 15, 12, 18)
888
<< RangeInRevision(13, 17, 13, 20)
889
<< RangeInRevision(13, 45, 13, 48));
888
891
dec = top->findDeclarations(QualifiedIdentifier("foo::bar")).first();
889
892
QCOMPARE(dec->kind(), Declaration::Namespace);
890
893
QVERIFY(dec->internalContext());
891
compareUses(dec, QList<SimpleRange>() << SimpleRange(8, 5, 8, 8)
892
<< SimpleRange(9, 5, 9, 8)
893
<< SimpleRange(10, 5, 10, 8)
894
<< SimpleRange(11, 9, 11, 12)
895
<< SimpleRange(12, 19, 12, 22)
896
<< SimpleRange(13, 21, 13, 24)
897
<< SimpleRange(13, 49, 13, 52));
894
compareUses(dec, QList<RangeInRevision>() << RangeInRevision(8, 5, 8, 8)
895
<< RangeInRevision(9, 5, 9, 8)
896
<< RangeInRevision(10, 5, 10, 8)
897
<< RangeInRevision(11, 9, 11, 12)
898
<< RangeInRevision(12, 19, 12, 22)
899
<< RangeInRevision(13, 21, 13, 24)
900
<< RangeInRevision(13, 49, 13, 52));
898
901
QCOMPARE(dec->internalContext()->localDeclarations().size(), 4);
899
902
foreach(Declaration* d, dec->internalContext()->localDeclarations()) {
900
903
kDebug() << d->toString() << d->qualifiedIdentifier();
903
906
dec = top->findDeclarations(QualifiedIdentifier("foo::bar::MyConst")).first();
904
compareUses(dec, SimpleRange(8, 9, 8, 16));
907
compareUses(dec, RangeInRevision(8, 9, 8, 16));
906
909
dec = top->findDeclarations(QualifiedIdentifier("foo::bar::myclass")).first();
907
910
QVERIFY(dynamic_cast<ClassDeclaration*>(dec));
908
compareUses(dec, QList<SimpleRange>() << SimpleRange(9, 9, 9, 16)
909
<< SimpleRange(11, 13, 11, 20)
910
<< SimpleRange(12, 23, 12, 30)
911
<< SimpleRange(13, 25, 13, 32)
911
compareUses(dec, QList<RangeInRevision>() << RangeInRevision(9, 9, 9, 16)
912
<< RangeInRevision(11, 13, 11, 20)
913
<< RangeInRevision(12, 23, 12, 30)
914
<< RangeInRevision(13, 25, 13, 32)
913
916
dec = top->findDeclarations(QualifiedIdentifier("foo::bar::myinterface")).first();
914
917
QVERIFY(dynamic_cast<ClassDeclaration*>(dec));
915
compareUses(dec, SimpleRange(13, 53, 13, 64) );
918
compareUses(dec, RangeInRevision(13, 53, 13, 64) );
917
920
dec = top->findDeclarations(QualifiedIdentifier("foo::bar::myclass::ClassConst")).first();
918
compareUses(dec, SimpleRange(9, 18, 9, 28));
921
compareUses(dec, RangeInRevision(9, 18, 9, 28));
920
923
dec = top->findDeclarations(QualifiedIdentifier("foo::bar::myfunc")).first();
921
compareUses(dec, SimpleRange(10, 9, 10, 15));
924
compareUses(dec, RangeInRevision(10, 9, 10, 15));
924
927
void TestUses::useNamespace()
940
943
Declaration* dec;
941
944
dec = top->findDeclarations(QualifiedIdentifier("foo")).first();
942
945
QCOMPARE(dec->kind(), Declaration::Namespace);
943
compareUses(dec, SimpleRange(4, 4, 4, 7));
946
compareUses(dec, RangeInRevision(4, 4, 4, 7));
945
948
dec = top->findDeclarations(QualifiedIdentifier("foo::bar")).first();
946
949
QCOMPARE(dec->kind(), Declaration::Namespace);
947
compareUses(dec, SimpleRange(4, 8, 4, 11));
950
compareUses(dec, RangeInRevision(4, 8, 4, 11));
949
952
dec = top->findDeclarations(QualifiedIdentifier("verylong")).first();
950
953
QCOMPARE(dec->kind(), Declaration::Namespace);
951
compareUses(dec, SimpleRange(4, 13, 4, 21));
954
compareUses(dec, RangeInRevision(4, 13, 4, 21));
953
956
dec = top->findDeclarations(QualifiedIdentifier("bar")).first();
954
957
QCOMPARE(dec->kind(), Declaration::NamespaceAlias);
955
compareUses(dec, QList<SimpleRange>() << SimpleRange(5, 4, 5, 7)
956
<< SimpleRange(5, 11, 5, 14)
957
<< SimpleRange(5, 20, 5, 23) );
958
compareUses(dec, QList<RangeInRevision>() << RangeInRevision(5, 4, 5, 7)
959
<< RangeInRevision(5, 11, 5, 14)
960
<< RangeInRevision(5, 20, 5, 23) );
959
962
dec = top->findDeclarations(QualifiedIdentifier("short")).first();
960
963
QCOMPARE(dec->kind(), Declaration::NamespaceAlias);
961
compareUses(dec, QList<SimpleRange>() << SimpleRange(6, 4, 6, 9)
962
<< SimpleRange(6, 13, 6, 18)
963
<< SimpleRange(6, 24, 6, 29) );
964
compareUses(dec, QList<RangeInRevision>() << RangeInRevision(6, 4, 6, 9)
965
<< RangeInRevision(6, 13, 6, 18)
966
<< RangeInRevision(6, 24, 6, 29) );
965
968
dec = top->findDeclarations(QualifiedIdentifier("foo::bar::a")).first();
966
compareUses(dec, SimpleRange(5, 8, 5, 9));
969
compareUses(dec, RangeInRevision(5, 8, 5, 9));
968
971
dec = top->findDeclarations(QualifiedIdentifier("foo::bar::b")).first();
969
compareUses(dec, SimpleRange(5, 15, 5, 16));
972
compareUses(dec, RangeInRevision(5, 15, 5, 16));
971
974
dec = top->findDeclarations(QualifiedIdentifier("foo::bar::C")).first();
972
compareUses(dec, SimpleRange(5, 24, 5, 25));
975
compareUses(dec, RangeInRevision(5, 24, 5, 25));
974
977
dec = top->findDeclarations(QualifiedIdentifier("verylong::a")).first();
975
compareUses(dec, SimpleRange(6, 10, 6, 11));
978
compareUses(dec, RangeInRevision(6, 10, 6, 11));
977
980
dec = top->findDeclarations(QualifiedIdentifier("verylong::b")).first();
978
compareUses(dec, SimpleRange(6, 19, 6, 20));
981
compareUses(dec, RangeInRevision(6, 19, 6, 20));
980
983
dec = top->findDeclarations(QualifiedIdentifier("verylong::C")).first();
981
compareUses(dec, SimpleRange(6, 30, 6, 31));
984
compareUses(dec, RangeInRevision(6, 30, 6, 31));
984
987
void TestUses::lateStatic()