Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Tobias Hunger
qt-creator
Commits
f4b95586
Commit
f4b95586
authored
Oct 21, 2009
by
Roberto Raggi
Browse files
Removed obsoleted code.
parent
1253c55d
Changes
3
Hide whitespace changes
Inline
Side-by-side
tests/manual/cplusplus/main.cpp
View file @
f4b95586
...
...
@@ -33,7 +33,6 @@
#include <Scope.h>
#include <Semantic.h>
#include <TranslationUnit.h>
#include <PrettyPrinter.h>
#include <Literals.h>
#include <Symbols.h>
#include <Names.h>
...
...
@@ -52,171 +51,7 @@
#include <iostream>
#include <sstream>
CPLUSPLUS_USE_NAMESPACE
class
Rewrite
{
QMultiMap
<
unsigned
,
QByteArray
>
_insertBefore
;
QMultiMap
<
unsigned
,
QByteArray
>
_insertAfter
;
QSet
<
unsigned
>
_removed
;
public:
void
remove
(
unsigned
index
)
{
remove
(
index
,
index
+
1
);
}
void
remove
(
unsigned
first
,
unsigned
last
)
{
Q_ASSERT
(
first
<
last
);
for
(;
first
!=
last
;
++
first
)
_removed
.
insert
(
first
);
}
void
insertTextBefore
(
unsigned
index
,
const
QByteArray
&
text
)
{
_insertBefore
.
insert
(
index
,
text
);
}
void
insertTextAfter
(
unsigned
index
,
const
QByteArray
&
text
)
{
_insertAfter
.
insert
(
index
,
text
);
}
void
rewrite
(
const
TranslationUnit
*
unit
,
const
QByteArray
&
contents
,
QByteArray
*
out
)
{
_source
=
contents
;
const
char
*
source
=
contents
.
constData
();
unsigned
previousTokenEndPosition
=
0
;
for
(
unsigned
i
=
0
;
i
<
unit
->
tokenCount
();
++
i
)
{
const
Token
&
tk
=
unit
->
tokenAt
(
i
);
if
(
previousTokenEndPosition
!=
tk
.
begin
())
{
Q_ASSERT
(
previousTokenEndPosition
<
tk
.
begin
());
out
->
append
(
source
+
previousTokenEndPosition
,
tk
.
begin
()
-
previousTokenEndPosition
);
}
QMultiMap
<
unsigned
,
QByteArray
>::
const_iterator
it
;
it
=
_insertBefore
.
constFind
(
i
);
for
(;
it
!=
_insertBefore
.
constEnd
()
&&
it
.
key
()
==
i
;
++
it
)
{
out
->
append
(
it
.
value
());
}
if
(
!
_removed
.
contains
(
i
))
out
->
append
(
source
+
tk
.
begin
(),
tk
.
f
.
length
);
it
=
_insertAfter
.
constFind
(
i
);
for
(;
it
!=
_insertAfter
.
constEnd
()
&&
it
.
key
()
==
i
;
++
it
)
{
out
->
append
(
it
.
value
());
}
previousTokenEndPosition
=
tk
.
end
();
}
}
protected:
QByteArray
_source
;
};
class
SimpleRefactor
:
protected
ASTVisitor
,
Rewrite
{
public:
SimpleRefactor
(
Control
*
control
)
:
ASTVisitor
(
control
)
{
}
void
operator
()(
const
TranslationUnit
*
unit
,
const
QByteArray
&
source
,
QByteArray
*
out
)
{
accept
(
unit
->
ast
());
rewrite
(
unit
,
source
,
out
);
}
protected:
bool
isEnumOrTypedefEnum
(
SpecifierAST
*
spec
)
{
if
(
!
spec
)
return
false
;
if
(
SimpleSpecifierAST
*
simpleSpec
=
spec
->
asSimpleSpecifier
())
{
if
(
tokenKind
(
simpleSpec
->
specifier_token
)
==
T_TYPEDEF
)
return
isEnumOrTypedefEnum
(
spec
->
next
);
}
return
spec
->
asEnumSpecifier
()
!=
0
;
}
virtual
bool
visit
(
SimpleDeclarationAST
*
ast
)
{
if
(
isEnumOrTypedefEnum
(
ast
->
decl_specifier_seq
))
{
//remove(ast->firstToken(), ast->lastToken());
insertTextBefore
(
ast
->
firstToken
(),
"/* #REF# removed "
);
insertTextAfter
(
ast
->
lastToken
()
-
1
,
"*/"
);
return
true
;
}
return
true
;
}
virtual
bool
visit
(
AccessDeclarationAST
*
ast
)
{
if
(
tokenKind
(
ast
->
access_specifier_token
)
==
T_PRIVATE
)
{
// change visibility from `private' to `public'.
remove
(
ast
->
access_specifier_token
);
insertTextAfter
(
ast
->
access_specifier_token
,
"public /* #REF# private->public */"
);
}
return
true
;
}
virtual
bool
visit
(
FunctionDefinitionAST
*
ast
)
{
bool
isInline
=
false
;
for
(
SpecifierAST
*
spec
=
ast
->
decl_specifier_seq
;
spec
;
spec
=
spec
->
next
)
{
if
(
SimpleSpecifierAST
*
simpleSpec
=
spec
->
asSimpleSpecifier
())
{
if
(
tokenKind
(
simpleSpec
->
specifier_token
)
==
T_INLINE
)
{
isInline
=
true
;
break
;
}
}
}
// force the `inline' specifier.
if
(
!
isInline
)
insertTextBefore
(
ast
->
firstToken
(),
"inline /* #REF# made inline */ "
);
return
true
;
}
virtual
bool
visit
(
ClassSpecifierAST
*
ast
)
{
// export/import the class using the macro MY_EXPORT.
if
(
ast
->
name
)
insertTextBefore
(
ast
->
name
->
firstToken
(),
"MY_EXPORT "
);
// add QObject to the base clause.
if
(
ast
->
colon_token
)
insertTextAfter
(
ast
->
colon_token
,
" public QObject,"
);
else
if
(
ast
->
lbrace_token
)
insertTextBefore
(
ast
->
lbrace_token
,
": public QObject "
);
// mark the class as Q_OBJECT.
if
(
ast
->
lbrace_token
)
insertTextAfter
(
ast
->
lbrace_token
,
" Q_OBJECT
\n
"
);
for
(
DeclarationListAST
*
it
=
ast
->
member_specifiers
;
it
;
it
=
it
->
next
)
{
accept
(
it
->
declaration
);
}
return
false
;
}
virtual
bool
visit
(
CppCastExpressionAST
*
ast
)
{
// Replace the C++ cast expression (e.g. static_cast<foo>(a)) with
// the one generated by the pretty printer.
std
::
ostringstream
o
;
PrettyPrinter
pp
(
control
(),
o
);
pp
(
ast
,
_source
);
remove
(
ast
->
firstToken
(),
ast
->
lastToken
());
const
std
::
string
str
=
o
.
str
();
insertTextBefore
(
ast
->
firstToken
(),
str
.
c_str
());
insertTextBefore
(
ast
->
firstToken
(),
"/* #REF# beautiful cast */ "
);
return
false
;
}
};
using
namespace
CPlusPlus
;
class
CloneCG
:
protected
ASTVisitor
{
...
...
@@ -513,15 +348,8 @@ int main(int argc, char *argv[])
const
QString
appName
=
args
.
first
();
args
.
removeFirst
();
bool
test_rewriter
=
false
;
bool
test_pretty_printer
=
false
;
foreach
(
QString
arg
,
args
)
{
if
(
arg
==
QLatin1String
(
"--test-rewriter"
))
test_rewriter
=
true
;
else
if
(
arg
==
QLatin1String
(
"--test-pretty-printer"
))
test_pretty_printer
=
true
;
else
if
(
arg
==
QLatin1String
(
"--help"
))
{
foreach
(
const
QString
&
arg
,
args
)
{
if
(
arg
==
QLatin1String
(
"--help"
))
{
const
QFileInfo
appInfo
(
appName
);
const
QByteArray
appFileName
=
QFile
::
encodeName
(
appInfo
.
fileName
());
...
...
@@ -530,6 +358,7 @@ int main(int argc, char *argv[])
" --test-rewriter Test the tree rewriter
\n
"
" --test-pretty-printer Test the pretty printer
\n
"
,
appFileName
.
constData
());
return
EXIT_SUCCESS
;
}
}
...
...
@@ -558,18 +387,5 @@ int main(int argc, char *argv[])
sem
.
check
(
decl
->
declaration
,
globalNamespace
->
members
());
}
// test the rewriter
if
(
test_rewriter
)
{
QByteArray
out
;
SimpleRefactor
refactor
(
&
control
);
refactor
(
&
unit
,
source
,
&
out
);
printf
(
"%s
\n
"
,
out
.
constData
());
}
else
if
(
test_pretty_printer
)
{
MemoryPool
pool2
;
TranslationUnitAST
*
other
=
unit
.
ast
()
->
clone
(
&
pool2
)
->
asTranslationUnit
();
PrettyPrinter
pp
(
&
control
,
std
::
cout
);
pp
(
other
,
source
);
}
return
EXIT_SUCCESS
;
}
tests/manual/cplusplus/test-pretty-printer
deleted
100755 → 0
View file @
1253c55d
#!/bin/sh
me
=
$(
dirname
$0
)
${
CPP
-gcc
}
-xc
++
-E
-include
$me
/conf.c++
$*
|
$me
/cplusplus0
--test-pretty-printer
tests/manual/cplusplus/test-rewriter
deleted
100755 → 0
View file @
1253c55d
#!/bin/sh
me
=
$(
dirname
$0
)
${
CPP
-gcc
}
-xc
++
-E
-include
$me
/conf.c++
$*
|
$me
/cplusplus0
--test-rewriter
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment