You could check if the dash is printed, if so we do not add the period, otherwise we print it.
\xpretobibmacro{date+extrayear}
{\usebibmacro{bbx:dashcheck}
{}
{\setunit{\addperiod\space}}}
{}{}
However, I think in this case a long solution is the most robust one. (You see how fickle the patching makes the macros.)
We replace some \setunit{\addspace}
by \setunit{\addperiod\space}
in the author
, bbx:editor
and bbx:translator
macros:
\makeatletter
\renewbibmacro*{author}{%
\ifboolexpr{
test \ifuseauthor
and
not test {\ifnameundef{author}}
}
{\usebibmacro{bbx:dashcheck}
{\bibnamedash}
{\usebibmacro{bbx:savehash}%
\printnames{author}%
\iffieldundef{authortype}
{\setunit{\addperiod\space}}
{\setunit{\addcomma\space}}}%
\iffieldundef{authortype}
{}
{\usebibmacro{authorstrg}%
\setunit{\addperiod\addspace}}}%
{\global\undef\bbx@lasthash
\usebibmacro{labeltitle}%
\setunit*{\adddperiod\space}}%
\usebibmacro{date+extrayear}}
\newbibmacro*{bbx:editor}[1]{%
\ifboolexpr{
test \ifuseeditor
and
not test {\ifnameundef{editor}}
}
{\usebibmacro{bbx:dashcheck}
{\bibnamedash}
{\printnames{editor}%
\setunit{\addcomma\space}%
\usebibmacro{bbx:savehash}}%
\usebibmacro{#1}%
\clearname{editor}%
\setunit{\addperiod\space}}%
{\global\undef\bbx@lasthash
\usebibmacro{labeltitle}%
\setunit*{\addperiod\space}}%
\usebibmacro{date+extrayear}}
\newbibmacro*{bbx:translator}[1]{%
\ifboolexpr{
test \ifusetranslator
and
not test {\ifnameundef{translator}}
}
{\usebibmacro{bbx:dashcheck}
{\bibnamedash}
{\printnames{translator}%
\setunit{\addcomma\space}%
\usebibmacro{bbx:savehash}}%
\usebibmacro{translator+othersstrg}%
\clearname{translator}%
\setunit{\addperiod\space}}%
{\global\undef\bbx@lasthash
\usebibmacro{labeltitle}%
\setunit*{\addspace}}%
\usebibmacro{date+extrayear}}
\makeatother
MWE
\documentclass{article}
\usepackage[style = authoryear-comp, dashed = true]{biblatex}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@article{lennon1963,
AUTHOR = "John Lennon",
TITLE = "Does she love you? Yeah, yeah, yeah",
JOURNALTITLE = "Top of the Pops",
YEAR = "1963",
PAGES = "5--13"}
@article{lennon1967a,
AUTHOR = "John Lennon",
TITLE = "A day in whose life?",
JOURNALTITLE = "Top of the Pops",
YEAR = "1967",
PAGES = "12--24"}
@article{lennon1967b,
AUTHOR = "John Lennon",
TITLE = "Is love all you need?",
JOURNALTITLE = "Top of the Pops",
YEAR = "1967",
PAGES = "25--34"}
\end{filecontents*}
\addbibresource{\jobname.bib}
\makeatletter
\renewbibmacro*{author}{%
\ifboolexpr{
test \ifuseauthor
and
not test {\ifnameundef{author}}
}
{\usebibmacro{bbx:dashcheck}
{\bibnamedash}
{\usebibmacro{bbx:savehash}%
\printnames{author}%
\iffieldundef{authortype}
{\setunit{\addperiod\space}}
{\setunit{\addcomma\space}}}%
\iffieldundef{authortype}
{}
{\usebibmacro{authorstrg}%
\setunit{\addperiod\addspace}}}%
{\global\undef\bbx@lasthash
\usebibmacro{labeltitle}%
\setunit*{\adddperiod\space}}%
\usebibmacro{date+extrayear}}
\newbibmacro*{bbx:editor}[1]{%
\ifboolexpr{
test \ifuseeditor
and
not test {\ifnameundef{editor}}
}
{\usebibmacro{bbx:dashcheck}
{\bibnamedash}
{\printnames{editor}%
\setunit{\addcomma\space}%
\usebibmacro{bbx:savehash}}%
\usebibmacro{#1}%
\clearname{editor}%
\setunit{\addperiod\space}}%
{\global\undef\bbx@lasthash
\usebibmacro{labeltitle}%
\setunit*{\addperiod\space}}%
\usebibmacro{date+extrayear}}
\newbibmacro*{bbx:translator}[1]{%
\ifboolexpr{
test \ifusetranslator
and
not test {\ifnameundef{translator}}
}
{\usebibmacro{bbx:dashcheck}
{\bibnamedash}
{\printnames{translator}%
\setunit{\addcomma\space}%
\usebibmacro{bbx:savehash}}%
\usebibmacro{translator+othersstrg}%
\clearname{translator}%
\setunit{\addperiod\space}}%
{\global\undef\bbx@lasthash
\usebibmacro{labeltitle}%
\setunit*{\addspace}}%
\usebibmacro{date+extrayear}}
\makeatother
\begin{document}
\nocite{*}
\printbibliography
\end{document}

To include a period after the dash, go with
\renewcommand*{\bibnamedash}{%
\ifdimless{\leftmargin}{0.75em}
{\mbox{\textemdash\addperiod\space}}
{\makebox[\leftmargin][l]{%
\ifdimless{\leftmargin}{1.25em}
{\textendash\addperiod}
{\textemdash\addperiod}}}}
This just adds \addperiod
after the different dashes.