mirror of
https://github.com/cp2k/cp2k.git
synced 2026-07-26 05:05:16 -04:00
267 lines
6.1 KiB
Python
267 lines
6.1 KiB
Python
#!/usr/bin/env python3
|
|
|
|
content = """
|
|
MODULE prettify_selftest
|
|
IMPLICIT NONE
|
|
PRIVATE
|
|
PUBLIC :: dp, test_routine, &
|
|
test_function, test_type, str_function
|
|
INTEGER, PARAMETER ::dp = SELECTED_REAL_KIND(15, 307)
|
|
TYPE test_type
|
|
REAL(KIND=dp) :: r = 1.0D-3
|
|
INTEGER :: i
|
|
END TYPE test_type
|
|
|
|
CONTAINS
|
|
|
|
SUBROUTINE test_routine( &
|
|
r, i, j, k, l)
|
|
INTEGER, INTENT(IN) :: r, i, j, k
|
|
INTEGER, INTENT(OUT) :: l
|
|
|
|
l = test_function(r, i, j, k)
|
|
END &
|
|
SUBROUTINE
|
|
|
|
PURE FUNCTION test_function(r, i, j, &
|
|
k) &
|
|
RESULT(l)
|
|
INTEGER, INTENT(IN) :: r, i, j, k
|
|
INTEGER :: l
|
|
|
|
l = r + i + j + k
|
|
END FUNCTION
|
|
FUNCTION &
|
|
str_function(a) RESULT(l)
|
|
CHARACTER(LEN=*) :: a
|
|
INTEGER :: l
|
|
|
|
IF (LEN(a) < 5) THEN
|
|
l = 0
|
|
ELSE
|
|
l = 1
|
|
END IF
|
|
END FUNCTION
|
|
|
|
SUBROUTINE write ()
|
|
END SUBROUTINE write
|
|
|
|
END MODULE
|
|
|
|
PROGRAM example_prog
|
|
USE example, ONLY: dp, test_routine, test_function, test_type, str_function
|
|
|
|
IMPLICIT NONE
|
|
INTEGER :: r, i, j, k, l, my_integer, m, saved_var = 10
|
|
INTEGER, DIMENSION(5) :: arr
|
|
INTEGER, DIMENSION(20) :: big_arr
|
|
INTEGER :: ENDIF
|
|
TYPE(test_type) :: t
|
|
REAL(KIND=dp) :: r1, r2, r3, r4, r5, r6
|
|
INTEGER, POINTER :: point
|
|
INTEGER, POINTER :: point_init => NULL()
|
|
|
|
point => NULL()
|
|
|
|
! 1) white space formatting !
|
|
!***************************!
|
|
! example 1.1
|
|
r = 1; i = -2; j = 3; k = 4; l = 5
|
|
r2 = 0.0_dp; r3 = 1.0_dp; r4 = 2.0_dp; r5 = 3.0_dp; r6 = 4.0_dp
|
|
r1 = -(r2**i*(r3 + r5*(-r4) - r6)) - 2.e+2
|
|
IF (r .EQ. 2 .AND. r <= 5) i = 3
|
|
WRITE (*, *) (MERGE(3, 1, i <= 2))
|
|
WRITE (*, *) test_function(r, i, j, k)
|
|
t%r = 4.0_dp
|
|
t%i = str_function("t % i = ")
|
|
|
|
! example 1.2
|
|
my_integer = 2
|
|
i = 3
|
|
j = 5
|
|
|
|
big_arr = [1, 2, 3, 4, 5, &
|
|
6, 7, 8, 9, 10, &
|
|
11, 12, 13, 14, 15, &
|
|
16, 17, 18, 19, 20]
|
|
|
|
! example 1.3: disabling auto-formatter:
|
|
my_integer = 2 !&
|
|
i = 3 !&
|
|
j = 5 !&
|
|
|
|
!&<
|
|
my_integer = 2
|
|
i = 3
|
|
j = 5
|
|
!&>
|
|
|
|
big_arr = [ 1, 2, 3, 4, 5, & !&
|
|
6, 7, 8, 9, 10, & !&
|
|
11, 12, 13, 14, 15, & !&
|
|
16, 17, 18, 19, 20] !&
|
|
|
|
! example 1.4:
|
|
|
|
big_arr = [1, 2, 3, 4, 5,&
|
|
& 6, 7, 8, 9, 10, &
|
|
& 11, 12, 13, 14, 15,&
|
|
&16, 17, 18, 19, 20]
|
|
|
|
! 2) auto indentation for loops !
|
|
!*******************************!
|
|
|
|
! example 2.1
|
|
l = 0
|
|
DO r = 1, 10
|
|
SELECT CASE (r)
|
|
CASE (1)
|
|
do_label: DO i = 1, 100
|
|
IF (i <= 2) THEN
|
|
m = 0
|
|
DO WHILE (m < 4)
|
|
m = m + 1
|
|
DO k = 1, 3
|
|
IF (k == 1) l = l + 1
|
|
END DO
|
|
END DO
|
|
END IF
|
|
END DO do_label
|
|
CASE (2)
|
|
l = i + j + k
|
|
END SELECT
|
|
END DO
|
|
|
|
! example 2.2
|
|
DO m = 1, 2
|
|
DO r = 1, 3
|
|
WRITE (*, *) r
|
|
DO k = 1, 4
|
|
DO l = 1, 3
|
|
DO i = 4, 5
|
|
DO my_integer = 1, 1
|
|
DO j = 1, 2
|
|
WRITE (*, *) test_function(m, r, k, l) + i
|
|
END DO
|
|
END DO
|
|
END DO
|
|
END DO
|
|
END DO
|
|
END DO
|
|
END DO
|
|
|
|
! 3) auto alignment for linebreaks !
|
|
!************************************!
|
|
|
|
! example 3.1
|
|
l = test_function(1, 2, test_function(1, 2, 3, 4), 4) + 3*(2 + 1)
|
|
|
|
l = test_function(1, 2, test_function(1, 2, 3, 4), 4) + &
|
|
3*(2 + 1)
|
|
|
|
l = test_function(1, 2, &
|
|
test_function(1, 2, 3, 4), 4) + &
|
|
3*(2 + 1)
|
|
|
|
l = test_function(1, 2, &
|
|
test_function(1, 2, 3, &
|
|
4), 4) + &
|
|
3*(2 + 1)
|
|
|
|
! example 3.2
|
|
arr = [1, (/3, 4, 5/), 6] + [1, 2, 3, 4, 5]
|
|
|
|
arr = [1, (/3, 4, 5/), &
|
|
6] + [1, 2, 3, 4, 5]
|
|
|
|
arr = [1, (/3, 4, 5/), &
|
|
6] + &
|
|
[1, 2, 3, 4, 5]
|
|
|
|
arr = [1, (/3, 4, &
|
|
5/), &
|
|
6] + &
|
|
[1, 2, 3, 4, 5]
|
|
|
|
! example 3.3
|
|
l = test_function(1, 2, &
|
|
3, 4)
|
|
|
|
l = test_function( &
|
|
1, 2, 3, 4)
|
|
|
|
arr = [1, 2, &
|
|
3, 4, 5]
|
|
arr = [ &
|
|
1, 2, 3, 4, 5]
|
|
|
|
! 4) More complex formatting and tricky test cases !
|
|
!**************************************************!
|
|
|
|
! example 4.1
|
|
l = 0
|
|
DO r = 1, 10
|
|
SELECT CASE (r)
|
|
CASE (1)
|
|
DO i = 1, 100; IF (i <= 2) THEN ! comment
|
|
DO j = 1, 5
|
|
DO k = 1, 3
|
|
l = l + 1
|
|
! unindented comment
|
|
! indented comment
|
|
END DO; END DO
|
|
ELSEIF (.NOT. j == 4) THEN
|
|
my_integer = 4
|
|
ELSE
|
|
WRITE (*, *) "hello"
|
|
END IF
|
|
END DO
|
|
CASE (2)
|
|
l = i + j + k
|
|
END SELECT
|
|
END DO
|
|
|
|
! example 4.2
|
|
IF ( &
|
|
l == &
|
|
111) &
|
|
THEN
|
|
DO k = 1, 2
|
|
IF (k == 1) &
|
|
l = test_function(1, &
|
|
test_function(r=4, i=5, &
|
|
j=6, k=test_function(1, 2*(3*(1 + 1)), str_function(")a!(b['(;=dfe"), &
|
|
9) + &
|
|
test_function(1, 2, 3, 4)), 9, 10) &
|
|
! test_function(1,2,3,4)),9,10) &
|
|
! + 13*str_function('') + str_function('"')
|
|
+ 13*str_function('') + str_function('"')
|
|
END & ! comment
|
|
! comment
|
|
DO
|
|
END IF
|
|
|
|
! example 4.3
|
|
arr = [1, (/3, 4, &
|
|
5/), &
|
|
6] + &
|
|
[1, 2, 3, 4, 5]; arr = [1, 2, &
|
|
3, 4, 5]
|
|
|
|
! example 4.4
|
|
ENDIF = 3
|
|
IF (ENDIF == 2) THEN
|
|
ENDIF = 5
|
|
ELSE IF (ENDIF == 3) THEN
|
|
WRITE (*, *) ENDIF
|
|
END IF
|
|
|
|
! example 4.5
|
|
DO i = 1, 2; IF (.TRUE.) THEN
|
|
WRITE (*, *) "hello"
|
|
END IF; END DO
|
|
|
|
END PROGRAM
|
|
"""
|
|
|
|
# EOF
|