in src/comment-handler.ts [80:117]
findLeadingComments(metadata) {
const leadingComments: Comment[] = [];
let target;
while (this.stack.length > 0) {
const entry = this.stack[this.stack.length - 1];
if (entry && entry.start >= metadata.start.offset) {
target = entry.node;
this.stack.pop();
} else {
break;
}
}
if (target) {
const count = target.leadingComments ? target.leadingComments.length : 0;
for (let i = count - 1; i >= 0; --i) {
const comment = target.leadingComments[i];
if (comment.range[1] <= metadata.start.offset) {
leadingComments.unshift(comment);
target.leadingComments.splice(i, 1);
}
}
if (target.leadingComments && target.leadingComments.length === 0) {
delete target.leadingComments;
}
return leadingComments;
}
for (let i = this.leading.length - 1; i >= 0; --i) {
const entry = this.leading[i];
if (entry.start <= metadata.start.offset) {
leadingComments.unshift(entry.comment);
this.leading.splice(i, 1);
}
}
return leadingComments;
}