From 342ed936e1957c0af32b96d6dee13fa0c84452c1 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sun, 5 Jul 2015 19:25:04 -0700 Subject: [PATCH] * lisp/progmodes/f90.el (f90-type-def-re): Handle attribute lists such as "extends(parent), private". (Bug#20969) * test/automated/f90.el (f90-test-bug20969, f90-test-bug20969b): New tests. --- lisp/progmodes/f90.el | 8 ++++---- test/automated/f90.el | 26 ++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/lisp/progmodes/f90.el b/lisp/progmodes/f90.el index 2bd7e7cc884..43b057ba882 100644 --- a/lisp/progmodes/f90.el +++ b/lisp/progmodes/f90.el @@ -898,12 +898,12 @@ Can be overridden by the value of `font-lock-maximum-decoration'.") (defconst f90-type-def-re ;; type word ;; type :: word - ;; type, stuff :: word - ;; type, bind(c) :: word - ;; type, extends(stuff) :: word + ;; type, attr-list :: word + ;; where attr-list = attr [, attr ...] + ;; and attr may include bind(c) or extends(thing) ;; NOT "type (" "\\_<\\(type\\)\\_>\\(?:\\(?:[^()\n]*\\|\ -.*,[ \t]*\\(?:bind\\|extends\\)[ \t]*(.*)[ \t]*\\)::\\)?\ +.*,[ \t]*\\(?:bind\\|extends\\)[ \t]*(.*).*\\)::\\)?\ [ \t]*\\(\\(?:\\sw\\|\\s_\\)+\\)" "Regexp matching the definition of a derived type.") diff --git a/test/automated/f90.el b/test/automated/f90.el index 4c1abc34c47..c521d289a5d 100644 --- a/test/automated/f90.el +++ b/test/automated/f90.el @@ -214,4 +214,30 @@ end module modname") (forward-line -1) (should (= 2 (current-indentation))))) +(ert-deftest f90-test-bug20969 () + "Test for http://debbugs.gnu.org/20969 ." + (with-temp-buffer + (f90-mode) + (insert "module modname +type, extends ( sometype ), private :: type1 +integer :: part1 +end type type1 +end module modname") + (f90-indent-subprogram) + (forward-line -1) + (should (= 2 (current-indentation))))) + +(ert-deftest f90-test-bug20969b () + "Test for http://debbugs.gnu.org/20969 ." + (with-temp-buffer + (f90-mode) + (insert "module modname +type, private, extends ( sometype ) :: type1 +integer :: part1 +end type type1 +end module modname") + (f90-indent-subprogram) + (forward-line -1) + (should (= 2 (current-indentation))))) + ;;; f90.el ends here -- 2.39.2