You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

publicIntroduction.sh 3.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. #!/bin/sh
  2. # @testcase public introductions not visible in libraries given to javac or jikes
  3. # @testcase synthetic members should not be visible from libraries given to ajc todo??
  4. # @process-test ajc publicIntroduction.sh # two testcase for public introductions
  5. [ -n "$DEBUG" ] && set -vx
  6. echo "before running: define (install) AJ_BASE and add #!/bin/sh to scripts"
  7. scriptDir=`dirname "$0"`
  8. scriptName=`basename "$0" .sh`
  9. tempDir=temp${scriptName}
  10. JDKDIR="${JDKDIR:-${JAVA_HOME:-`type java | sed -n '/bin\/java/s|/bin/java.*||p'`}}"
  11. AJ_BASE="${AJ_BASE:-`type ajc | sed -n '/bin\/ajc/s|/bin/ajc.*||p'`}"
  12. ajLib="${AJ_BASE}/lib/aspectjrt.jar"
  13. PS="${PS:-;}" # todo
  14. errMssg() {
  15. [ -n "$1" ] && echo "## FAIL: $1"
  16. [ -n "$2" ] && exit "$2"
  17. }
  18. makeSources() {
  19. cat > Javap.java<<EOF
  20. public class Javap {
  21. interface I {
  22. void i();
  23. }
  24. class C {}
  25. static aspect A {
  26. public void I.i() {}
  27. declare parents: C implements I;
  28. }
  29. }
  30. EOF
  31. cat > Target.java <<EOF
  32. public class Target {
  33. // regular members
  34. public long publicLong;
  35. public long getPublicLong() { return publicLong; }
  36. }
  37. aspect A {
  38. // introduced members
  39. public int Target.publicInt;
  40. public int Target.getPublicInt() {
  41. return publicInt;
  42. }
  43. public static int Target.staticPublicInt;
  44. public static int Target.getStaticPublicInt() {
  45. return staticPublicInt;
  46. }
  47. }
  48. EOF
  49. mkdir user
  50. cat > user/TargetUser.java<<EOF
  51. public class TargetUser {
  52. public static void main (String[] args) {
  53. Target me = new Target();
  54. // regular members
  55. long l = me.publicLong;
  56. l = me.getPublicLong();
  57. // introduced members
  58. int i = me.publicInt;
  59. i = me.getPublicInt();
  60. i = me.getStaticPublicInt();
  61. i = me.staticPublicInt;
  62. }
  63. }
  64. EOF
  65. }
  66. #############################################################
  67. curdir=`pwd`
  68. [ ! -d "$tempDir" ] && mkdir -p "$tempDir"
  69. cd "$tempDir" || errMssg "unable to creat temp dir" 3
  70. [ -z "$JDKDIR" ] \
  71. && errMssg "expecting \$JDKDIR/bin/java: $JDKDIR/bin/java" 3
  72. [ -z "$AJ_BASE" ] \
  73. && errMssg "expecting \$AJ_BASE/bin/ajc: $AJ_BASE/bin/ajc" 3
  74. makeSources
  75. mkdir classes
  76. ### javap case - PR#649
  77. cmdName=ajc.javap
  78. "$AJ_BASE/bin/ajc" -classpath "$ajLib" \
  79. -d classes Javap.java \
  80. > $cmdName.txt 2>&1 \
  81. || errMssg "$cmdName: `cat $cmdName.txt`" 3
  82. cmdName=javap
  83. "$JDKDIR/bin/javap" -classpath "$ajLib${PS}classes" Javap \
  84. > $cmdName.txt 2>&1 \
  85. || errMssg "$cmdName: `cat $cmdName.txt`" 3
  86. # javac case - PR#646
  87. cmdName=ajc
  88. "$AJ_BASE/bin/ajc" -classpath "$ajLib" \
  89. -d classes Target.java \
  90. > $cmdName.txt 2>&1 \
  91. || errMssg "$cmdName: `cat ../$cmdName.txt`" 3
  92. cd user
  93. cmdName=../javac
  94. "$JDKDIR/bin/javac" -classpath ../classes -d ../classes TargetUser.java \
  95. > $cmdName.txt 2>&1 \
  96. || errMssg "$cmdName: `cat $cmdName.txt`" 3
  97. cd ..
  98. cmdName=java
  99. "$JDKDIR/bin/java" -classpath "$ajLib${PS}classes" TargetUser \
  100. > $cmdName.txt 2>&1 \
  101. || errMssg "$cmdName: `cat $cmdName.txt`" 3
  102. cd "$curdir"
  103. rm -rf "$tempDir"
  104. echo "tests passed if they got to this point..."