@@ -48,6 +48,7 @@ var windowShim = require( './window.js' );
48
48
var debug = logger ( 'jsdoc-doctest' ) ;
49
49
var RE_ANNOTATION = / (?: \n | ^ ) (?: v a r | l e t | c o n s t ) ? ? ( [ a - z A - Z 0 - 9 . _ ] + ) ? = ? [ ^ ; ] * ; \n \/ \/ ? ( r e t u r n s | ( [ A - Z a - z ] [ A - Z a - z _ 0 - 9 ] * ) ? ? = > | t h r o w s ) { 0 , 1 } ( [ \s \S ] * ?) ( \n | $ ) / g;
50
50
var RE_CONSOLE = / c o n s o l e \. (?: d i r | e r r o r | l o g ) / ;
51
+ var RE_MODULE_TAG = / \* @ m o d u l e [ ^ \n ] * \n / g;
51
52
var NODE_SHEBANG = / # ! \/ u s r \/ b i n \/ e n v n o d e / ;
52
53
var DOPTS = {
53
54
'sloppy' : true ,
@@ -220,6 +221,7 @@ function main( context ) {
220
221
* @param {ASTNode } node - node to examine
221
222
*/
222
223
function validate ( node ) {
224
+ var wrapped ;
223
225
var jsdoc ;
224
226
var ast ;
225
227
@@ -229,7 +231,14 @@ function main( context ) {
229
231
}
230
232
jsdoc = findJSDoc ( source , node ) ;
231
233
if ( isObject ( jsdoc ) ) {
232
- ast = parseJSDoc ( jsdoc . value , DOPTS ) ;
234
+ if ( contains ( jsdoc . value , '@module' ) ) {
235
+ // Wrap with /** */ and strip @module tag for proper parsing with `doctrine`:
236
+ wrapped = '/**' + jsdoc . value + '*/' ;
237
+ wrapped = replace ( wrapped , RE_MODULE_TAG , '' ) ;
238
+ ast = parseJSDoc ( wrapped , DOPTS ) ;
239
+ } else {
240
+ ast = parseJSDoc ( jsdoc . value , DOPTS ) ;
241
+ }
233
242
processTags ( jsdoc , ast . tags ) ;
234
243
}
235
244
}
0 commit comments